2012-09-21 2 views
2

데이터 프레임이 두 개인 행 (iettest (y1, y2))에서 독립적 인 2 그룹 t 테스트를 수행하고 싶습니다. 여기서 y1은 dataframe1의 행이고 y2는 일치합니다 데이터 프레임 2의 행)R : 2 개의 데이터 프레임 행에 대한 t 테스트

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

편집 : 방금 ​​dataframe1 [i,] dataframe2 [i,] 형식을 찾았습니다. 이것은 루프에서 작동합니다. 그게 최선의 해결책인가?

답변

5

약술 된 접근 방식은 합리적입니다. 저장 벡터를 미리 할당하십시오. 난 당신이 정말로 열 대신에 행을 비교하고 싶다는 것을 두 번 확인했다. 나는 함께 일하는 대부분의 데이터 세트 관찰의 단위로 각 행이 있고 열이 별도의 응답 /에 관계없이 관심의 열을 나타냅니다, 당신의 데이터입니다 - 그래서 당신이해야 할 거라면, 여기 접근 방식 :

#Fake data 
df1 <- data.frame(matrix(runif(100),10)) 
df2 <- data.frame(matrix(runif(100),10)) 


#Preallocate results 
testresults <- vector("list", nrow(df1)) 
#For loop 
for (j in seq(nrow(df1))){ 
    testresults[[j]] <- t.test(df1[j,], df2[j,]) 
} 

당신에게 df1에 행이있는 한 이제 목록이 있습니다. 그런 다음 lapplysapply을 사용하여 목록 개체 밖으로 쉽게 추출하는 것이 좋습니다.

+0

지혜의 말씀에 감사드립니다. 실제로 행에 걸쳐 ttest를 수행해야합니다. 아마도 내 부분에서 파일 디자인이 좋지 않을 수도 있습니다. 나는 다음 번에 그것을 명심 할 것이다! – bdeonovic

+0

@Chase 나는 당신의 솔루션과 함께 '쌍으로 된 T ='를 사용하여 paired t-test를 할 수 있는지 궁금합니다. 현재로서는 오류가 발생합니다 ... –

1

데이터를 열로 저장하는 것이 좋습니다.

당신은 그럼 어떤 한 번

t.test_results <- mapply(t.test, x= df1_t, y = df2_t, SIMPLIFY = F) 

에서 두 data.frames 열 순환에 mapply을 사용할 수 있습니다 또는 당신은 Map을 사용할 수

df1_t <- as.data.frame(t(df1)) 
df2_t <- as.data.frame(t(df2)) 

하여 data.frame 트랜스 수

mapply에 대한 간단한 래퍼, SIMPLIFY = F (키 스트로크 저장)

t.test_results <- Map(t.test, x = df1_t, y = df2_t) 
+1

왜'as.data.frame (t (df1))'이 작동하지 않는지에 대한 정보가 누락 되었습니까? – Chase

+0

흥미로운 솔루션, 감사합니다! – bdeonovic

+0

아니, 그냥 너무 복잡하게 될 뿐이야 .... (지금 변경됨) – mnel