对于以下示例:
library(dplyr)
df <- data.frame(v1 = c("a", "a", "b", "b"), v2 = c(3,3,4,4), v3 = c(11,21,31,41))
df
v1 v2 v3
1 a 3 11
2 a 3 21
3 b 4 31
4 b 4 41
我想在v2上总结v3并保留v1,其中包含:
df %>% group_by(v2) %>% summarise(v1 = first(v1), s3 = sum(v3))
并获得:
v2 v1 s3
1 3 1 32
2 4 2 72
但我想:
v1 v2 s3
1 a 3 32
2 b 4 72
我知道如何保持因子字符串iso id和列的顺序相同吗?
答案 0 :(得分:1)
这是一个简单快速的data.table
解决方案。
library(data.table)
setDT(df)
# summarize
output <- df[, .( v1=v1[1] , s3=sum(v3)), by=v2]
# reorder columns
setcolorder(output, c("v1", "v2", "s3"))
# v1 v2 s3
# 1: a 3 32
# 2: b 4 72
答案 1 :(得分:0)
你是如此亲密。 这是您问题的dplyr解决方案。
df%>%group_by(v1,v2)%>%摘要(s3 = sum(v3))