2012-02-19 4 views
18

ID 열이있는 데이터 프레임 df 예 : A, B 등이 있습니다. 또한 특정 ID가 포함 된 벡터를 가지고 있습니다 :벡터에서 데이터 프레임 필터링

L <- c("A", "B", "E") 

어떻게 벡터에있는 ID 만 가져 오도록 데이터 프레임을 필터링 할 수 있습니까? 개별적으로 사용하겠습니다.

subset(df, ID == "A") 

전체 벡터에서 어떻게 필터링합니까?

답변

35

당신 N 잘라하는 것이 좋습니다 단지 것이다 곧 할 것입니다 정확한 응답 사람에서보다 더 배우게됩니다 %in% 연산자를 사용할 수 있습니다 : 귀하의 ID를 고유 경우

> df <- data.frame(id=c(LETTERS, LETTERS), x=1:52) 
> L <- c("A","B","E") 
> subset(df, id %in% L) 
    id x 
1 A 1 
2 B 2 
5 E 5 
27 A 27 
28 B 28 
31 E 31 

을, 당신은 match() 사용할 수 있습니다

> df <- data.frame(id=c(LETTERS), x=1:26) 
> df[match(L, df$id), ] 
    id x 
1 A 1 
2 B 2 
5 E 5 

또는 수 있도록 그들에게 행하여 dataframe 및 추출물의 rownames는 : 속도가 관심사 인 경우

> rownames(df) <- df$id 
> df[L, ] 
    id x 
A A 1 
B B 2 
E E 5 

마지막으로, 고급 사용자를위한, 그리고, 나는 data.table 패키지에보고하는 것이 좋습니다 것입니다.

+1

완성을 위해 :'df [id % in % L,]' – JaKu

1

'일치'를 사용해야합니다. 한 벡터의 값을 다른 벡터의 값과 일치시키고 일치가없는 경우 NA를 제공합니다. 그러면 일치의! is.na를 기반으로 하위 집합을 구성합니다.

참조? 경기 당신은 아마 자신을 위해 운동 할 수있는 경우에 붙여 :