1

2つのデータフレームをIDでマージしようとしています。最初に一致するすべてのIDをマージし、次に一致しないものを見つけます。共通のIDをマージできるマージ関数を見つけました。例:

m1 = merge(df1, df2, by=c("id"))

現在、データフレーム1と一致しないデータフレーム2のIDを使用して新しいデータフレームを作成しようとしています。

どのコマンドを探すべきか教えていただけますか?

例えば:

次の2つのデータセットがあります。

ここに画像の説明を入力してくださいここに画像の説明を入力してくださいdf1 df2

df1にないdf2のIDで新しいデータフレームを作成しようとしています。たとえば、df2のid="a3"および"c3"です。

ここに画像の説明を入力してください

私のサンプルデータ:

    df1 =data.frame(id= c("a1","a2","b1","b2","c1","c2"), value= 1:6)
df2 =data.frame(id= c("a1","a2","a3","b1","c1","c3"), value= 7:12)

どうもありがとう、アヤン

4

1 に答える 1

6

を使用したい場合はmerge、次の方法があります。

df_merged <- merge(df2, df1, by.x="id", by.y="id", all.x=TRUE)
df_merged[is.na(df_merged$value.y),]
  id value.x value.y
3 a3       9      NA
6 c3      12      NA

列名はdata.frames同一でありmerge、共通の列名でマージされるため、ここでは、使用する列名を関数に明示的に指定する必要がありますid

しかし、本当にここでマージしたいかどうかを自問する必要がありますか?df2にない行だけが必要な場合はdf1、このようなものを使用してみませんか?

df2[!(df2$id %in% df1$id), ]
  id value
3 a3     9
6 c3    12
于 2012-05-28T12:58:49.117 に答える