我必须从一个数据框中收集值并放在另一个数据框中。我曾尝试使用合并功能,但在第二个数据帧中搞乱了。
这就是我的数据的样子。
> 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
.
如果我在这里使用合并,结果表将失去其订单。
答案 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