次の2つのデータフレームがあります(例)。
df1:
name profile type strand
A 4.5 1 +
B 3.2 1 +
C 5.5 1 +
D 14.0 1 -
E 45.1 1 -
F 32.8 1 -
G 19.9 1 +
df2:
name
A
B
C
G
df1
の行を削除して、df1$name = df2$name
の行を削除して、次を取得します。
出力:
name profile type strand
D 14.0 1 -
E 45.1 1 -
F 32.8 1 -
使用するコードの一部を教えてくれる人がいれば大いに役立つでしょう。最初は簡単に思えましたが、昨日からそれを台無しにしています。
%in%
演算子が必要です。そう、
df1[!(df1$name %in% df2$name),]
あなたが欲しいものを与える必要があります。
df1$name %in% df2$name
は、df1$name
の値がdf2$name
にあるかどうかをテストします!
演算子は結果を逆にします。これはanti-joinと呼ばれることもあります:
library(dplyr)
anti_join(df1, df2, by = "name")
df1[!(as.character(df1$jobId) %in% as.character(df2$name)), ]
name
は文字ではなく因子であるため、as.character
を実行に追加する必要がありました。 %in%
はこれを直接変換することになっていないのですか?