【问题标题】:Delete duplicate rows and sum corresponding values of last column in a dataframe删除重复行并对数据框中最后一列的相应值求和
【发布时间】:2020-02-23 02:51:27
【问题描述】:

如果我们想从数据框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 相等,但此信息不包含在后一个结果中)。

【问题讨论】:

    标签: r dataframe duplicates


    【解决方案1】:

    我们可以通过sumoperation 代替duplicated 进行分组

    aggregate(weight~ ., df, sum)
    

    dplyr 中,可以使用

    library(dplyr)
    df %>%
       group_by(from, to) %>%
       summarise(weight = sum(weight))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多