加入两个数据帧

时间:2016-04-16 19:04:37

标签: r

我必须从一个数据框中收集值并放在另一个数据框中。我曾尝试使用合并功能,但在第二个数据帧中搞乱了。

这就是我的数据的样子。

> df<-as.data.frame(cbind(letters[1:4],1:4))
> df
  V1 V2
1  a  1
2  b  2
3  c  3
4  d  4

> dflist <- data.frame("home"= sample(df[,1],15, replace = TRUE))
> 
> dflist$away <-sample(df[,1],15, replace = TRUE)
> dflist
   home away
1     a    b
2     a    a
3     d    c
4     d    a
5     c    c
6     a    c
7     b    d
8     b    b
9     a    b
10    b    d
11    b    a
12    a    a
13    a    c
14    c    b
15    d    a

期望的结果应该如下所示。

   home away value1 value2
1     a    b 1 2
2     a    a 1 1
3     d    c 4 3
4     d    a 4 1
5     c    c 3 3
.
如果我在这里使用合并,

结果表将失去其订单。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

dflist[c("value1", "value2")] <- t(apply(dflist, 1, function(x) 
    c(df[match(x[1], df$V1),2], df[match(x[2], df$V1),2])))
dflist
   home away value1 value2
1     a    b      1      2
2     a    a      1      1
3     d    c      4      3
4     d    a      4      1
5     c    c      3      3
6     a    c      1      3
7     b    d      2      4
8     b    b      2      2
9     a    b      1      2
10    b    d      2      4
11    b    a      2      1
12    a    a      1      1
13    a    c      1      3
14    c    b      3      2
15    d    a      4      1