在保留值的同时删除重复项

时间:2016-06-14 17:40:41

标签: r

我这里有一个表格示例:

Jerry 2
John 3
Mark 4
John 1
Kevin 10

我想在这种情况下删除重复的条目,John,但是想要保留值并将它们添加起来。不确定这是否有意义,但它应该看起来像:

Jerry 2
John 4
Mark 4
Kevin 10

有关如何在R中执行此操作的任何想法?我知道如何删除重复但不添加所有重复值。

感谢。

2 个答案:

答案 0 :(得分:4)

我们可以使用aggregate并将FUN指定为sum

aggregate(col2~Name, df1, FUN = sum)
#    Name col2
#1 Jerry    2
#2  John    4
#3 Kevin   10
#4  Mark    4

data.table

library(data.table)
setDT(df1)[, .(col2 = sum(col2)), by = Name]
#    Name col2
#1: Jerry    2
#2:  John    4
#3:  Mark    4
#4: Kevin   10

或使用dplyr

library(dplyr)
df1 %>%
    group_by(Name) %>%
    summarise(col2 = sum(col2))

数据

df1 <- structure(list(Name = c("Jerry", "John", "Mark", "John", "Kevin"
 ), col2 = c(2L, 3L, 4L, 1L, 10L)), .Names = c("Name", "col2"), 
 class = "data.frame", row.names = c(NA, -5L))

答案 1 :(得分:0)

类似aggregate的内容与ddply

中的plyr相似
library(plyr)
ddply(df, c("Name"), function(x) sum(x$Value))


#   Name V1
#1 Jerry  2
#2  John  4
#3 Kevin 10
#4  Mark  4