2016-06-17 5 views
0

일부 ID가 두 번 이상 나타나는 데이터 프레임이 있습니다. 이 ID를 고유하게 샘플링 했으므로 표본 ID가있는 벡터가 있습니다. 이제 데이터 프레임의 어떤 행이 샘플에 표시되는 ID를 가지고 있는지 알려주는 논리를 작성해야합니다.데이터 프레임과 복제본 및 벡터를 비교하는 방법은 무엇입니까?

나는 match 기능을 시도했지만 첫 번째 모습 만 선택하고 모든 모습이 필요합니다.

또한 병합을 시도했지만 데이터 세트가 너무 커서 메모리를 사용할 수 없습니다.

+0

'mydf $의 idcol의 %를 논리적 인덱스. –

+0

@PierreLafortune이 상황에서 예의는 무엇입니까? 내 대답이 의견을 충분히 넘어서는가요, 아니면 삭제해야합니까? 나는 어느 쪽이든 괜찮아. – lmo

+0

아니요 삭제하지 마십시오. 의견을 남기 셨습니다. 예제로 확장하려면 답변 할 수 있습니다. –

답변

2

당신은 행 인덱스를 얻을 수 in과 함께 논리적 벡터와 which를 얻을 수 %in%를 사용할 수 있습니다. 다음은 중복 ID가 포함 된 재현 가능한 예제입니다. 당신에게 df$id 그렇지 않으면 mySampleFALSE 나타나는 경우 TRUE이다 논리적 벡터를 제공

x=match(df$id, mySample, nomatch = 0) > 0 

을 :

set.seed(1234) 
df <- data.frame(id=sample(1:80, 100, replace=TRUE), b=rnorm(100)) 
mySample <- seq(1, 80, by=6) 

#logical vector length of nrow(df) 
myRows <- df$id %in% mySample 
# row indices 
myIndices <- which(df$id %in% mySample) 
2

이 (이 기능을하려고했던대로) 당신이 match를 사용 할 수있는 것입니다.

는 각각의 인덱스를 검색하려면 다음 %의 idsample`에서

which(x==T) 
관련 문제