我这里有一个表格示例:
Jerry 2
John 3
Mark 4
John 1
Kevin 10
我想在这种情况下删除重复的条目,John,但是想要保留值并将它们添加起来。不确定这是否有意义,但它应该看起来像:
Jerry 2
John 4
Mark 4
Kevin 10
有关如何在R中执行此操作的任何想法?我知道如何删除重复但不添加所有重复值。
感谢。
答案 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