获取数据框的摘要,该数据框将有一列数据框,其中包含 R 中每个组的数据

问题描述 投票:0回答:2

我通常会使用以下代码来获得我想要的东西,但现在想知道现在 cur_data 已被弃用,什么是一个好方法。

df <- data.frame(col_a = c("a","a","b","c","c"),
  col_b=c(1,2,3,4,5),
  col_c=c("q","w","e","r","t"))
dfdata <- df %>% dplyr::group_by(col_a) %>% dplyr::summarise(data = list(dplyr::cur_data()))
dfdata
# A tibble: 3 × 2
  col_a data
  <chr> <list>
1 a     <tibble [2 × 2]>
2 b     <tibble [1 × 2]>
3 c     <tibble [2 × 2]>
dfdata$data[[1]]
# A tibble: 2 × 2
  col_b col_c
  <dbl> <chr>
1     1 q
2     2 w

谢谢!

我一直在浏览 pick() 和 reframe() 的文档,但无法弄清楚任何事情。

r dplyr
2个回答
1
投票

使用

tidyr::nest()

library(tidyr)

dfdata <- df %>% 
  nest(.by = col_a)

结果:

#> dfdata
# A tibble: 3 × 2
  col_a data
  <chr> <list>
1 a     <tibble [2 × 2]>
2 b     <tibble [1 × 2]>
3 c     <tibble [2 × 2]>

#> dfdata$data[[1]]
# A tibble: 2 × 2
  col_b col_c
  <dbl> <chr>
1     1 q
2     2 w

nest 默认调用列表列

"data"
,但您可以使用
.key
参数指定不同的名称。


0
投票

还有一个:

dfdata <- dplyr::group_nest(df, col_a)

> dfdata
# A tibble: 3 × 2
  col_a               data
  <chr> <list<tibble[,2]>>
1 a                [2 × 2]
2 b                [1 × 2]
3 c                [2 × 2]

> dfdata$data[[1]]
# A tibble: 2 × 2
  col_b col_c
  <dbl> <chr>
1     1 q    
2     2 w 
© www.soinside.com 2019 - 2024. All rights reserved.