【问题标题】:Adding together rows from duplicate entries in a dataframe (Excel or R) [duplicate]将数据框中重复条目的行加在一起(Excel 或 R)[重复]
【发布时间】:2018-03-19 11:15:41
【问题描述】:

我有一个包含一些重复的数据框,其中大约 100 个,数据显示如下:

Data                   V1       V2      V3      V4 
Cellulomonas uda      0.2       0.0     0.0     0.1
Cellulomonas uda      0.0       0.1     0.3     0.1

但我想在数据框中找到所有重复项并将它们添加在一起,以给出:

Data                   V1       V2      V3      V4 
Cellulomonas uda      0.2       0.1     0.3     0.2

dplyr 中是否有可以帮助解决此问题的函数?甚至一种在 Excel 中将行添加在一起并手动删除其中一个重复项的方法也可以。

【问题讨论】:

  • 考虑na.rm=Tsum-function

标签: r excel dplyr add rows


【解决方案1】:

您可以为每个Data 值取 V 值的总和:

df1 <- read.table(text="Data                   V1       V2      V3      V4 
'Cellulomonas uda'      0.2       0.0     0.0     0.1
'Cellulomonas uda'      0.0       0.1     0.3     0.1",h=T,string=F)

library(dplyr)

df1 %>% group_by(Data) %>% summarize_all(sum)
# # A tibble: 1 x 5
#                 Data    V1    V2    V3    V4
#                <chr> <dbl> <dbl> <dbl> <dbl>
#   1 Cellulomonas uda   0.2   0.1   0.3   0.2

【讨论】:

  • summarise_all(sum) 可能更适合 OP 的问题。
  • 这并没有把它们加在一起。哦,对不起,弹涂鱼,我刚看到你的评论。这些值不重复,只是“数据”列中的一些名称。 V1 等中的值是唯一的。
  • 是的,使用sum 似乎工作正常。谢谢你们俩
  • 我认为V4 的值应该是0.2
  • 再次编辑 ;)
【解决方案2】:

对于基础 R,我们可以使用 aggregate:

aggregate(. ~ Data, df1, sum)

              Data  V1  V2  V3  V4
1 Cellulomonas uda 0.2 0.1 0.3 0.2

data.table 我想我们可以这样做:

library(data.table)

dt[, lapply(.SD, sum), by = Data]

              Data  V1  V2  V3  V4
1 Cellulomonas uda 0.2 0.1 0.3 0.2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2013-08-14
    • 2021-10-27
    相关资源
    最近更新 更多