2017-12-01 17 views
0

(STATA의 예 *)와 유사한 이름을 가진 모든 변수를 포함합니다. 예를 들어R 바로 가기 바로 가기 또는 유사한 이름을 가진 모든 변수를 포함하는 심볼이 있다면 궁금 해서요

, 나는 회귀를 가지고 있고 양식 year1, year2 50 개 시간 인형, STATA에서 year3 내가 year*를 작성하여 이들 모두를 포함 할 수있는 경우.

R에 유사한 기능이 있습니까? 나는 같은 효과를 얻기 위해 factor(year)과 같은 작업을 수행 할 수 있습니다 알고 있지만 특정 이유로 나는 많은 시간 인형이 필요합니다.

+2

당신이 최소한의 재현 예를 우리에게 제공 할 수있을 것인가? 그것이, 우리는 정말 ... 당신의 데이터 구조가 어떤 것인지 –

+0

'이름 (MYDATA) [그렙 ("년", 이름 (MYDATA를))] 모르는'또는 실제 데이터를 원하는 경우'MYDATA [그렙 ("연도", 이름 (myData))]' – G5W

답변

2

는 R에서는 포함하는 가변 수의 정의 된 공식을 사용한다. 그래서, 모델의 YEAR1, YEAR2 및 year3를 포함하면 pasteas.formula를 사용하여 수식을 만들 것입니다 :

formula <- as.formula(paste('y ~', paste0('year', 1:3, collapse = ' + '))) 
formula 
#y ~ year1 + year2 + year3 
lm(formula, data = data) 

lm 모델의 당신이 as.formula 기능을 건너 뛸 수있는 문자열이 자동으로 내부 수식으로 변환됩니다 때문에 lm하지만 다른 모델이 필요합니다.

대안은 당신이 필요로하는 모든 변수를 포함하고 수식으로 y ~ .를 사용하도록 data.frame을 필터링하는 것입니다.

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)