1

match()複数のベクトルを一致させる方法/代替手段はありますか? 説明する:

df1 = data.frame(c1=letters[1:10], c2=1:10, c4=10:1)
df2 = data.frame(c1=c('a','b','c','x'), c2=c(1,2,4,4))

df1$c4データを適切な行に添付したい場合は、次のようにdf2使用できますmatch()

df1$c3 = paste(df1$c1, df1$c2)
df2$c3 = paste(df2$c1, df2$c2)
df2$c4 = df1$c4[match(df2$c3, df1$c3)]

しかし、これは少し長すぎるようです。もっとエレガントなテクニックを知っている人はいますか?

4

1 に答える 1

1

関数はmerge()あなたが探しているものでなければなりません。元:

> merge(df1,df2,all.x=T)
   c1 c2 c4
1   a  1 10
2   b  2  9
3   c  3  8
4   d  4  7
5   e  5  6
6   f  6  5
7   g  7  4
8   h  8  3
9   i  9  2
10  j 10  1
> merge(df1,df2,all.y=T)
  c1 c2 c4
1  a  1 10
2  b  2  9
3  c  4 NA
4  x  4 NA
于 2013-08-19T15:34:36.933 に答える