Ярлык 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 ~ . как формула.

Другие вопросы по тегам