3

次のデータ フレームがあります。

id1<-c(1,2,3,4,5)
spent<-c(10,20,30,40,50)
id2<-c(1,3,4)
x<-c(1,2,2)
df1<-data.frame(id1,spent)
df2<-data.frame(id2,x)

df1にも存在するID を見つけて、df2それらのすべての情報を新しいデータ フレームにエクスポートする必要があります (たとえばdf3)。これに基づいdf3て、次のようになります。

   id1     spent
   1         10
   3         30
   4         40

この問題を解決していただければ幸いです。

4

2 に答える 2

8

および引数に関する情報を取得するには、 mergeseeを使用します。?mergeby.xby.y

merge(df1, df2, by.x="id1", by.y="id2")[,-3] # this is the desired output you showed
  id1 spent
1   1    10
2   3    30
3   4    40

merge(df1, df2, by.x="id1", by.y="id2") # this is with "all their information"
  id1 spent x
1   1    10 1
2   3    30 2
3   4    40 2
于 2012-09-06T08:52:51.510 に答える
6

多くの ID をマージしている場合は、data.tableパッケージを使用するよりも高速になる可能性があります。merge例えば、

library(data.table)

dt1 <- data.table(id1, spent, key = "id1")

dt1[J(unique(df2$id2))]
#    id1 spent
# 1:   1    10
# 2:   3    30
# 3:   4    40

nbuniqueもおそらく必要ありませんが、実際のデータに重複したid2s が含まれている場合に備えて含めました。

EDITが必要です。J()さらに、Matthew Dowle によるコメントを参照してください。

于 2012-09-06T10:27:11.693 に答える