2012-03-06 1 views
0

저는 R로 시작하려고합니다. 데이터 프레임의 두 행에서 요소의 교차점을 찾는 방법이 궁금합니다. 나는 R : 데이터 프레임의 두 행에서 요소의 교차를 어떻게 찾을 수 있습니까?

intersect(thing[1,],thing[2,]) 

을 시도했지만 (교차로에 있던 일을 생략하면서, 확실히 교차로에없는 뭔가) 그것은 나에게 완전한 넌센스 대답을했다.

이 문제는 어떻게 해결해야합니까?

+4

당신이 우리가 오류를 재현 할 수있는 데이터 세트 또는 더 나은를 제공 할 수 있습니다 ... 데이터 프레임은 여러 가지 유형이 있지만, 아무것도 마음에 나지 않는 시나리오 매끄러운 해결책이있을 수 있습니다 오류를 재현하는 데이터의 최소 회전 속도? –

+0

'thing <- matrix (c (1 : 10,5 : 14), 2, byrow = TRUE)의 간단한 예 : intersect (thing [1,], thing [2,])'는 잘 작동합니다. 당신의 데이터는 무엇입니까? –

+0

이것은 내 문제와 비슷하게 들리지만 목록 목록을 사용하고 * 인접 행렬 * (모든 가능성 교차 집합의 길이가있는 행렬)을 얻습니다. 내 추격에서, 그 자체와의 교차점은 1과 같은 길이를 생성하고, 다른 하나는 0과 같습니다. ... – gunzapper

답변

2

열이 모두 동일한 유형 (예 : 모든 숫자) 인 경우 먼저 as.matrix를 통해 행렬로 변환 한 다음 교차를 적용합니다. 열 변수의 다른 유형이있는 경우 비교하고 싶지 않아요 이후

zz <- as.matrix(z) 
intersect(zz[1,], zz[2,]) 

, 첫째 열이 실제로 비교되는 식별 할 필요가있을 수있다 : 예를 들어, 데이터 프레임은 Z 불려 갔을 경우 정수에 대한 레벨 변수. 예를 들어 "1"여기에 반환 될 것이지만

z <- data.frame(AA = c(1, 1, 3, 4), 
       BB = c(1, 5, 3, 1), 
       CC = c('1', 'a', 'b', 'b'), 
       DD = c(1, 2, 3, 4) 
z[z[,1] == z[,3],1] 

에서, "1"레벨 변수와 숫자 변수에 대한 완전히 다른 의미를 가질 수있다, 그래서 우리는 숫자 변수를 비교하고 싶지해야하며, 최소한주의 깊은 감독이없는 수준의 변수들.