如何在dplyr汇总后保留因子字符串?

时间:2016-05-19 20:50:20

标签: r dplyr

对于以下示例:

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和列的顺序相同吗?

2 个答案:

答案 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))