Дополнительно
Создайте фиктивную переменную
У меня возникли проблемы с созданием следующих фиктивных переменных в R:
Я анализирую годовой временной ряд данных (период времени 1948-2009). У меня есть два вопроса:
-
Как создать фиктивную переменную для наблюдения №10, т.е. для 1957 года (значение = 1 в 1957 году и ноль в противном случае)?
-
Как создать фиктивную переменную, которая равна нулю до 1957 года и принимает значение 1 с 1957 года и далее до 2009 года?
67
16
Другой вариант, который может работать лучше, если у вас много переменных, это
factor
иmodel.matrix
.Это будет включать столбец перехвата (все единицы) и один столбец для каждого года в вашем наборе данных, кроме одного, который будет значением "по умолчанию" или значением перехвата.
Вы можете изменить способ выбора значения "по умолчанию", изменяя
contrasts.arg
вmodel.matrix
.Также, если вы хотите опустить перехват, вы можете просто опустить первый столбец или добавить
+0
в конец формулы.Надеюсь, это будет полезно.
Простейший способ получения этих фиктивных переменных заключается в следующем:
В более общем случае, вы можете использовать
ifelse
для выбора между двумя значениями в зависимости от условия. Так, если вместо фиктивной переменной 0-1 по какой-то причине вы хотите использовать, скажем, 4 и 7, вы можете использоватьifelse(year == 1957, 4, 7)
.Используя чайников::манекен():
Млр пакет включает
createDummyFeatures
для этой цели:Других ответов здесь предлагаем прямые маршруты для выполнения этой задачи—одно, что многие модели (например,
лм
) будет делать для вас все равно внутренне. Тем не менее, вот несколько способов сделать фиктивные переменные с Максом Куна'ы популярныхкаре
и ["рецепты"] (https://topepo.github.io/recipes/) пакеты. В то время как несколько более многословный, они легко масштабируются в более сложных ситуациях, и вписываются в их рамки.каре::dummyVars
С
каре
, соответствующая функцияdummyVars
, который естьпредсказать
метод, чтобы применить его на фрейм данных:в
рецепты::step_dummy
С "рецептами", соответствующие функции
step_dummy
:В зависимости от контекста, извлечь данные с
подготовки
ипекут
илисок
:Для работы с такими фиктивными переменными я обычно делаю следующее:
(1) как мне создать фиктивную переменную для наблюдения №10, т.е. для 1957 года (значение = 1 в 1957 году и ноль в противном случае).
Для usecase, как это представлено в вопросе, вы также можете просто умножить логическое условие с
1
(или, может быть, даже лучше, С1Л
):Я читал это на форуме kaggle:
Если вы хотите получить к дамми, а не к-1, Попробуйте:
Лучшие,
В <а href="https://stat.ethz.ch/R-manual/R-devel/library/base/html/ifelse.html">`ifelse` функция лучше для простой логики такой.
Также, если вы хотите вернуть данные персонажа, то вы можете сделать это.
Категориальные переменные с раскроя...
Это самый простой вариант.
Другим способом является использование
mtabulate
изпакета qdapTools
, т. е.Я использую такую функцию (для данных.таблицу):
Использование:
Конвертировать данные в данных.стол и использовать набор по ссылке и фильтрации строк
Мы также можем использовать
cSplit_e
отsplitstackshape
. Используя @zx8754'данныхдругой способ вы можете сделать это использовать
Привет я написал это общие функции создается переменная, которая по существу повторяет функции замены в stata.
Если X-это фрейм данных X и я хочу переменная под названием "А", которая будет принимать значение
1
Прих$б
принимает значениес