我有两个数据帧,我在争论数据后计算过,而且我仍然坚持如何将它们组合起来。我试图重新创建以下场景:
第一个数据帧d1:
player <- c("Ace", "Ace", "Ace", "Ace")
champ <- c("Azir", "Kassadin", "Xerath", "Zed")
games.played <- c(1, 2, 1, 1)
d1 <- data.frame(player, champ, games.played)
看起来像这样:
player champ games.played
-------------------------
Ace Azir 1
Ace Kassadin 2
Ace Xerath 1
Ace Zed 1
第二个数据帧d2:
player <- c("Ace", "Ace", "Ace", "Ace")
champ <- c("Chogath", "Karthus", "Victor", "Xerath")
games.played <- c(1, 1, 1, 2)
d2 <- data.frame(player, champ, games.played)
看起来像这样:
player champ games.played
-------------------------
Ace Chogath 1
Ace Karthus 2
Ace Viktor 1
Ace Xerath 1
我想要的输出是(排序不相关):
player champ games.played
-------------------------
Ace Azir 1
Ace Kassadin 2
Ace Xerath 3
Ace Zed 1
Ace Chogath 1
Ace Karthus 1
Ace Victor 1
这里有一个问题,如果两个数据帧中都存在一对玩家和冠军,我只想添加所玩的游戏数量。否则,只需添加不存在的对。
我到目前为止最接近的是使用rbind(d1, d2)
给出了以下输出:
player champ games.played
-------------------------
Ace Azir 1
Ace Kassadin 2
Ace Xerath 1
Ace Zed 1
Ace Chogath 1
Ace Karthus 1
Ace Victor 1
Ace Xerath 2
我的实际数据框要大得多,所以我不能手动检查重复行并单独组合它们并添加games.played。我的实际数据帧由(玩家,冠军)排列,这就是为什么我创建的场景是这样排序的。真的很感激任何帮助!
答案 0 :(得分:0)
我们可以rbind
两个数据集,然后分组,并使用sum
中的aggregate
获取base R
aggregate(games.played~., rbind(d1, d2), sum)
与dplyr
类似的选项bind_rows
group_by
和summarise
library(dplyr)
bind_rows(d1, d2) %>%
group_by(player, champ) %>%
summarise(games.played = sum(games.played))