2012-02-08 2 views
0

이전에 생성 한 값을 사용하여 데이터 프레임의 일부를 추출해야합니다. 예를 들어, 나는 다음과 같은 데이터가 있습니다 이 값을 제외 할데이터 프레임 추출 부분

a<-c(1,2,3,4,6,7,10,12,17,20) 
df1<-data.frame(a) 

내가 다음 원하는을 (에 "A"DF1의)가 열 B에 나타날 때 DF2에서 : 그래서

b<-c(1,2,3,4,5,6,6,6,7,8,9,10,11,11,11,12,13,14,14:20) 
c<-c(1:25) 
df1<-data.frame(b,c) 

, 행 5,8,9,11 등의 데이터 프레임을 남겨 두어야합니다.

내 데이터 프레임 (df1)에서이 값을 제거하는 코드를 가진 사람이 누구든지 도와 줄 수 있습니까?

감사합니다.

답변

2

subset()는 이런 종류의 당신에게 좋은 친구가 될 것입니다 :

의 벡터를 반환
subset(df1, !b %in% a) 

(b의 각 요소가 a에 있는지 여부를 결정하기 b %in% a 테스트 하위 표현, 을 그렇지 않은가 나타납니다 즉 TRUE들과 FALSE 말이지. !b %in% a은 (/는 당신이 TRUE와 논리적 벡터 인덱싱와 끝까지 있도록 계속 싶습니다 df1의 행이야, 그 부울 값을 뒤집 부정).)

+1

이 대신에 나의 대답이 삭제되었습니다. 비슷하게'[]'로 서브 세트 할 수있다. 'df1 [! df1 $ b % in % a,]' – Justin

+0

@Justin - 네,하지만 답은 좋았습니다. 실제로 프로그래밍에서'['와'[['' (예 : 함수 내부 [예를 들어 여기를 참조하십시오] (http://stackoverflow.com/questions/6060872/how-to-use-with-within-inside-a-function/6061156#6061156)). 'subset()'은 대화식으로 사용하기에 좋으며 프로그래밍 할 때 사람이 읽을 수있는 느낌이 들었습니다. –

+1

@ JoshO'Brian 감사합니다.하지만 시간을내어 완전한 답을 작성하십시오. 내가 배우고있을 때 나는 대답에 덧붙여 설명을 높이 평가했다. – Justin