Ярлык R для включения всех переменных с похожим именем (т.е. * в Stata)
Мне было интересно, если есть ярлык или символ, чтобы включить все переменные с похожим именем.
Например, если у меня есть регрессия, и у меня есть 50 временных манекенов в форме year1
, year2
, year3
в Stata я могу включить все это, написав year*
,
Есть ли подобная функциональность в R? Я знаю, что могу сделать что-то вроде factor(year)
чтобы получить тот же эффект, но по определенной причине мне нужно иметь много временных манекенов.
2 ответа
Вариация ответа @Lyzander и комментария @G5W с использованием reformulate()
:
yearvars <- grep("^year",names(myData), value=TRUE)
form <- reformulate(c("othervar1","othervar2",yearvars),response="stuff")
Результат form
будет stuff ~ othervar1 + othervar2 + year1 + year2 + ...
lm(form, data=myData)
В R вы использовали бы формулу, чтобы определить, какие из фиктивных переменных включить. Таким образом, чтобы включить год1, год2 и год3 в модель, вы должны создать формулу, используя paste
а также as.formula
:
formula <- as.formula(paste('y ~', paste0('year', 1:3, collapse = ' + ')))
formula
#y ~ year1 + year2 + year3
lm(formula, data = data)
Для lm
модель, которую вы могли бы пропустить as.formula
функция, потому что строка автоматически преобразуется в формулу внутри lm
но другие модели требуют этого.
Альтернативой является фильтрация вашего data.frame для включения всех необходимых вам переменных, а затем использование y ~ .
как формула.