如果我们要从数据帧df
中删除重复项,我们只需要写入df[!duplicated(df),]
即可从其中删除重复项。我有以下数据框:
df <- data.frame(from = c("z","y","z","w","y"), to=c("x","w","x","z","w"), weight=c(2,1,3,5,6))
我想获得一些不同的东西。在df[,1:2]
中,第一行和第三行之间是相等的,我想:1)删除其中一个; 2)求和相应的权重值。例如。对于此示例,预期结果是:
from to weight
z x 5
y w 7
w z 5
无论如何,如果我使用:
df2=df[,1:2]
which(duplicated(df2) | duplicated(df2[nrow(df2):1, ])[nrow(df2):1])
我获得
[1] 1 2 3 5
不允许我获得期望的结果(例如1和3相等,2和5相等,但是后面的结果中不包含此信息)。
答案 0 :(得分:2)
我们可以通过sum
操作而不是duplicated
进行分组
aggregate(weight~ ., df, sum)
在dplyr
中,可以使用
library(dplyr)
df %>%
group_by(from, to) %>%
summarise(weight = sum(weight))