3

私は数百行の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 ループに入る必要なくこれを実行できる簡単なコマンドはありますか?

重要な注意: 私が持っている名前はあまりにも複雑です (そして、括弧、スラッシュ、バックスラッシュ、アンダースコアが含まれています)。これは私が持っているものを単純に表現したものです。

ありがとう、

4

1 に答える 1

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)))

1 つの列を他の多くの (またはすべての) 列と比較する場合:

Reduce(setdiff,c(d[,"A",drop=FALSE],d[,setdiff(names(d),"A"),drop=FALSE]))
于 2013-04-23T15:36:18.857 に答える