r - R中的分组和head(1)并在group_map中保留列表名称
问题描述
(使用 mtcars 进行再现)
第一个问题:为什么下面返回一行而不是每组一行。
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
head(1)
第二个问题:我可以这样做,但这里的问题是我的列表的名称(cyl 名称)没有保留,我怎样才能保留它。
mtcars %>%
group_by(cyl) %>%
group_map(~head(.x,1))
解决方案
head
是一个基本 R 函数,它不知道如何尊重dplyr
函数完成的分组。有一些dplyr
功能可以让你这样做,所以使用它们。
library(dplyr)
mtcars %>% group_by(cyl) %>% slice(1)
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
#2 21 6 160 110 3.9 2.62 16.5 0 1 4 4
#3 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
要回答您的第二个问题,与基本split
dplyr
函数不同,请不要给列表命名,以便您稍后分配它们。您可以使用 :
mtcars %>%
group_by(cyl) %>%
group_map(~head(.x,1)) %>%
setNames(unique(sort(mtcars$cyl)))
#$`4`
# A tibble: 1 x 10
# mpg disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 22.8 108 93 3.85 2.32 18.6 1 1 4 1
#$`6`
# A tibble: 1 x 10
# mpg disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21 160 110 3.9 2.62 16.5 0 1 4 4
#$`8`
# A tibble: 1 x 10
# mpg disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 18.7 360 175 3.15 3.44 17.0 0 0 3 2
推荐阅读
- python - 如何提高我的功能的效率?
- reactjs - 错误:构建 react-static 应用程序模板时出现“模块解析失败:意外令牌”
- database - 表示关系
- php - 自定义 WordPress 主题:未找到商店页面
- django - Django - 使用 Forms 进行嵌套循环和模板渲染
- kubernetes - 为什么 Kubernetes HPA 转换自定义指标?
- python - 将单个 numpy 数组的值添加到其他 numpy 数组中的所有列
- android - 改变recyclerview的footer itemView的view text
- ios - 检测我的控制器是否显示为弹出框
- outlook - 401 身份验证错误 MS Graph 与 Outlook 365 帐户