2011-05-02 5 views
1

루프를 수행해야하며 (이전에는 수행하지 않았 음) 관측 값 (1 열)이 있어야합니다. 변수 (s1 ~ s5)가 유의미 (P< 0.05), (ii) 해당 p 값으로 변수 전체에서 중요한 조합 만 유지하는 것. 나는 이것이 원래의 데이터가 큰이 하나와 유사한 R.에서 루프를 수행하는 방법을 배울 수있는 좋은 방법이 될 것이라고 생각 :루프를 수행 중 R

ob <- c(120,100,85,56,87) 
s1 <- c("ab","aa","ab","aa","bb") 
s2 <- c("aa","aa","ab","bb","bb") 
s3 <- c("bb","ab","aa","ab","ab") 
s4 <- c("aa","ab","bb","ab","aa") 
s5 <- c("bb","ab","aa","ab","bb") 
dset <- data.frame(ob,s1,s2,s3,s4,s5) 

DSET

ob s1 s2 s3 s4 s5 
120 ab aa bb aa bb 
100 aa aa ab ab ab 
85 ab ab aa bb aa 
56 aa bb ab ab ab 
87 bb bb ab aa bb 

어떤 도움이 될 것입니다 고맙다! 바즈

+0

어떻게 중요도를 결정합니까? 칼럼 s1 ~ s5가 의미에 어떻게 영향을 미치나요? 여기에는 for-loop를 사용할 필요가없는 거의 확실한 벡터화 된 솔루션이 있지만, 나는 틀릴 수도 있습니다. – Chase

+0

@ 체이스에서 유의 수준은 P <0.05이고 s1-s5는 무리에서 소의 수행에 영향을 미친 것으로 여겨지는 저격수의 집합입니다. – baz

+0

이제 s1에서 s5까지의 모든 조합에 대해 선형 회귀 분석을 실행 하시겠습니까? 그게 맞습니까? – Chase

답변

1

어쩌면 내가 모르는 뭔가가있어,하지만이 data.frame을 전치없이 data.frame에 P-값의 열을 추가하는 의미가 어떻게 보이지 않아요. 변수가 다른 열에있는 경우 어떤 p-value가 어떤 독립 변수에 해당하는지 어떻게 알 수 있습니까? 위 산출 할 모든

#Use grep to return the columns that match the pattern "s". This returns their column index. 
#This is what we'll use in the for loop 
vars <- grep("s", names(dset)) 

#Create a new vector to hold the anova results and name it 
dat <- vector("integer", length = ncol(dset)) 
names(dat) <- colnames(dset) 

#Run for loop, assigning the p-value from the anova to the proper spot in the vector we made 
for (var in vars) { 
    dat[var] <- anova(lm(ob ~ dset[, var], data = dset))$"Pr(>F)"[1] 
} 

:

> dat 
     ob  s1  s2  s3  s4  s5 
0.0000000 0.7219532 0.3108441 0.4668372 0.6908916 0.6908916 

내가 그것을 떠날거야 다음은 각 독립 변수에 대한 분산 분석의를 실행하고 새로운 벡터에 저장할 수있는 대한 루프를 사용하여 하나의 방법입니다 이를 다시 원래의 data.frame과 어떻게 관련 지을 수 있습니다.

+0

네가 맞습니다! 그 질문은 혼란 스러웠고 나는 그것에 대해 사과한다. 나는 그것을 단지 편집했고, 그것이 지금 의미를 갖기를 바란다, 나는 바란다! – baz