2016-08-10 3 views
1

특정 열에이 값을 포함하는 다른 데이터 프레임에서 행을 제거하기 위해 인덱스로 사용할 값 목록이 길다.큰 목록을 기반으로 데이터 프레임에서 행 제거

는 간단한 examle은

X <- data.frame(Variable1=c(11,14,12,15),Variable2=c(2,3,1,4)) 
X[X$Variable1!=11 & X$Variable1!=12, ] 

하지만 난 내가 두 번째 dataframe에 사용할 목록 인이의 값으로 dataframe를 사용하기 위해 효율적인 방법이 만들어?

답변

1

%in%을 사용하여 여러 값을 기반으로하는 논리적 색인을 만들 수 있습니다.

X[!(X$Variable1 %in% c(11, 12)),] 

우리는 옵션이 setkey로하고 다음 값

library(data.table) 
setDT(X, key = "Variable1")[!.(c(11,12))] 
#  Variable1 Variable2 
#1:  14   3 
#2:  15   4 

을 부정 또는 우리가 @ 데이비드 Arenburg로 on

setDT(X)[!.(11:12), on = "Variable1"] 
+0

댓글을 달았 사용하는 것이 data.table를 사용하는 경우 c가 데이터 프레임이면 (df2라고 가정 해 봅시다)'X [! % df2의 변수 1 %]'? – Jake

+1

@Jake 죄송합니다, 나는'X $ Variable1'을 의미했습니다. – akrun

+1

@Jake 그것은 저에게'df2 <- data.frame (group_1 = c (11, 12)), setDT (X) [! (df2 $ group_1) , on = "Variable1"] # 변수 1 변수 2 1 : 14 3 2 : 15 4' 나는'data.table_1.9.7'을 사용하고 있습니다. – akrun

관련 문제