2 つの csv ファイルがあり、それぞれが 1 列のデータで構成されています
たとえば、vecA.csv は次のようになります。
id
1
2
vecB.csv は
id
3
2
次のようにデータセットを読み取ります。
vectorA<-read.table("vecA.csv",sep=",",header=T)
vectorB<-read.table("vecB.csv",sep=",",header=T)
Bのみに属する要素からなるベクトルを生成したい。
2 つの csv ファイルがあり、それぞれが 1 列のデータで構成されています
たとえば、vecA.csv は次のようになります。
id
1
2
vecB.csv は
id
3
2
次のようにデータセットを読み取ります。
vectorA<-read.table("vecA.csv",sep=",",header=T)
vectorB<-read.table("vecB.csv",sep=",",header=T)
Bのみに属する要素からなるベクトルを生成したい。
あなたは機能を探していますsetdiff
setdiff(vectorB$id, vectorA$id)
これを一意の値に減らしたくない場合は、not in
関数を作成できます
(ここで @joran に称賛否定と一致)
'%nin%' <- Negate('%in%')
vectorB$id[vectorB$id %nin% vectorA$id]
ベクトルが代わりにdata.table
s の場合、必要なのは 5 文字だけです。
B[!A]
library(data.table)
# read in your data, wrap in data.table(..., key="id")
A <- data.table(read.table("vecA.csv",sep=",",header=T), key="id")
B <- data.table(read.table("vecB.csv",sep=",",header=T), key="id")
# Then this is all you need
B[!A]
[マシュー] v1.8.7 では、ファイルの読み取りもよりシンプルで高速になりました。
A <- setkey(fread("vecA.csv"), id)
B <- setkey(fread("vecB.csv"), id)
B[!A]