如何对数值向量中的值进行分组和汇总

时间:2020-08-21 01:41:35

标签: r dplyr tidyverse

我有以下数据框:

library(tidyverse)
library(tibble)
data_frame <-
  tribble(
    ~a,    ~b,
    "1",   27,              
    "1",   29,
    "2",   33,
    "2",   37
  ) 

我想通过变量a将此数据帧分组,并在数字矢量中汇总b的所有值。

但是,我只想出了如何总结字符向量中b的值,如以下代码所示:

data_frame %>% 
  group_by(a) %>% 
  summarise(values = paste(b, collapse = ","))
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 2 x 2
#>   a     values
#>   <chr> <chr> 
#> 1 1     27,29 
#> 2 2     33,37

如何总结b中的值,以便最后总结数字向量中b中的值?

2 个答案:

答案 0 :(得分:3)

也许您想将数据存储在一个列表中,该列表会将数据保留为数字。

library(dplyr)
data_frame %>% group_by(a) %>% summarise(b = list(b))

#    a     b        
#  <chr> <list>   
#1 1     <dbl [2]>
#2 2     <dbl [2]>

这也可以在基数R中完成:

aggregate(b~a, data_frame, list)

data.table

library(data.table)
setDT(data_frame)[, .(b = list(b)), a]

答案 1 :(得分:1)

我们可以使用

library(data.table)
setDT(data_frame)[, .(b = .(b)), a]
#   a     b
#1: 1 27,29
#2: 2 33,37