使用R中的dplyr在2列上聚合数据

时间:2016-03-30 15:21:53

标签: r dplyr

对于示例数据框:

df <- structure(list(output.code = structure(1:15, .Label = c("E00000001",
       "E00000003", "E00000005", "E00000007", "E00000010", "E00000012", 
       "E00000013", "E00000014", "E00000016", "E00000017", "E00000018", 
       "E00000019", "E00000020", "E00000021", "E00000022"), class = "factor"), 
       all.usual = c(194L, 250L, 367L, 123L, 102L, 213L, 216L, 154L, 
       281L, 290L, 218L, 139L, 226L, 282L, 223L), same.address = c(176L, 
       218L, 288L, 83L, 80L, 196L, 134L, 125L, 228L, 218L, 189L, 
       112L, 185L, 235L, 192L), lsoa.code = structure(c(1L, 1L, 
       1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L), .Label = c("E01000001", 
      "E01000002", "E01000003"), class = "factor")), .Names = c("output.code", 
       "all.usual", "same.address", "lsoa.code"), class = "data.frame", row.names = c(NA, 
       -15L))  

我正在尝试使用dplyr将两列合并到一个新的数据框中。

对于一栏,我发现这可行:

library(dplyr)
df %>% 
  group_by(lsoa.code) %>% 
  summarise(all.usual = sum(all.usual))

但我希望总结所有&#39; lsoa.codes&#39;对于两个变量(same.address和all.usual)。

这不起作用:

df %>% 
  group_by(lsoa.code) %>% 
  summarise(all.usual = sum(all.usual)
  summarise(same.address = sum(same.address))

有人可以建议如何调整此代码以汇总这两列吗?

另外,我希望从结果中创建一个数据框。

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

喜欢这个吗?

    df %>%
    group_by(lsoa.code) %>% 
    summarise(all.usual = sum(all.usual), same.address = sum(same.address))