您的预期输出实际上并未对任何值求和。相反,您正在连接它们。您可以在aggregate 调用中使用c 函数。
aggregate(value ~ name, dat, c)
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44
dat 是您的数据。
您也可以使用paste,或toString(基本上是paste(..., collapse = ", ")。
aggregate(value ~ name, dat, toString)
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44
aggregate(value ~ name, dat, paste, collapse = ",")
# name value
# 1 nameA 10,3,5
# 2 nameB 5
# 3 nameC 1,44
或者,您可以使用dplyr
library(dplyr)
group_by(dat, name) %>% summarize(value = toString(value))
# name value
# 1 nameA 10, 3, 5
# 2 nameB 5
# 3 nameC 1, 44