我通常会使用以下代码来获得我想要的东西,但现在想知道现在 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() 的文档,但无法弄清楚任何事情。
使用
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
参数指定不同的名称。
还有一个:
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