2013-05-16 6 views
1

각각 150 개의 행과 10 개의 열 + 열과 행 ID를 갖는 2 개의 데이터 프레임이 있습니다. 한 데이터 프레임의 모든 행을 다른 행 (예 : 150x150 상관)의 모든 행과 연관시키고 결과 22500 값의 분포를 그립니다. (그런 다음 분포에서 p 값 등을 계산하려고합니다. 그러나 다음 단계입니다.)의 데이터 프레임 (제품) 상관 관계 R

솔직하게 나는 어디에서 시작해야할지 모르겠다. 내 데이터를 읽고 두 행렬 등의 벡터 또는 일치하는 조각을 상호 연관시키는 방법을 볼 수는 있지만 여기에서하려고하는 것에 대해서는 처리 할 수 ​​없습니다.

+0

우리가 재현 예제 (즉, 코드 예 데이터)를 우리에게 제공하여 도움을 도와주세요, HTTP 참조 : /을 자세한 내용은 /stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example을 참조하십시오. –

답변

2
set.seed(42) 
DF1 <- as.data.frame(matrix(rnorm(1500),150)) 
DF2 <- as.data.frame(matrix(runif(1500),150)) 

#transform to matrices for better performance 
m1 <- as.matrix(DF1) 
m2 <- as.matrix(DF2) 

#use outer to get all combinations of row numbers and apply a function to them 
#22500 combinations is small enough to fit into RAM 
cors <- outer(seq_len(nrow(DF1)),seq_len(nrow(DF2)), 
    #you need a vectorized function 
    #Vectorize takes care of that, but is just a hidden loop (slow for huge row numbers) 
    FUN=Vectorize(function(i,j) cor(m1[i,],m2[j,]))) 
hist(cors) 

enter image description here

+1

+1, 코드에 약간의 설명을 추가 할 수도 있습니까? 따라서 다른 사람들 (OP 포함)에게 더 유용합니다. –

+0

안녕하세요, Roland, 정말 고마워요. 그건 속임수 였고, 많은 것을 배웠습니다. 건배. (오, 폴 감사합니다.) – user2388815

1

당신은 두 개의 인수 cor를 사용할 수 있습니다

cor(t(m1), t(m2))