我有一个包含数百行的4列数据集,这里有一些示例:
A B C D
V1 V2 V100 V4
V15 V5 V6 V100
V8 V3 V9 V10
V3 V11 V12 V13
我想获得A列中的变量列表,但不是其他变量列表(如上例中的V1),然后是C列和D列中的另一个变量列表,但其他变量列表中没有(如V100在示例中)等等。任何简单的命令都可以做到这一点,而不必进入复杂的for循环?
重要提示:我所拥有的名字太复杂了(而且它们包括支架,空位,背面和背景)这只是我所拥有的一个简单的表现。
谢谢,
答案 0 :(得分:5)
set.seed(1)
d <- data.frame(replicate(4,paste0("V",sample(1:10,4,replace=TRUE))))
names(d) <- LETTERS[1:4]
# A B C D
#1 V3 V3 V7 V7
#2 V4 V9 V1 V4
#3 V6 V10 V3 V8
#4 V10 V7 V2 V5
我相信你正在寻找setdiff
。
with(d,setdiff(A,D))
如果您想进行多项比较,Reduce
可能会有所帮助:
with(d,Reduce(setdiff,list(A,B,C,D)))
如果您想将一列与多个(或所有)其他列进行比较:
Reduce(setdiff,c(d[,"A",drop=FALSE],d[,setdiff(names(d),"A"),drop=FALSE]))