如何解决R中tidyvesre的summarise输出中未显示n
下面是我的代码,我想知道为什么n = n()
的结果没有显示在最终输出中?
library(tidyverse)
hsb <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/hsb.csv')
hsb %>% dplyr::select(math,sector) %>% group_by(sector) %>%
summarise(across(.fns = list(mean=mean,sd=sd),n = n()))
解决方法
问题似乎与across
的右括号有关。我们希望n
是单个列,而不是每种情况都重复,因此,我们可以关闭across
并单独使用n = n()
,即在across
library(dplyr)
hsb %>%
dplyr::select(math,sector) %>%
group_by(sector) %>%
summarise(across(.fns = list(mean=mean,sd=sd)),n = n(),.groups = 'drop')
# A tibble: 2 x 4
# sector math_mean math_sd n
# <int> <dbl> <dbl> <int>
#1 0 11.4 7.08 3642
#2 1 14.2 6.36 3543
仅说明我们是否需要多个'n'列(并非真正需要)。这里,我们select
仅两列,其中之一是分组列,因此它将仅返回单个'n'
hsb %>%
dplyr::select(math,sector) %>%
group_by(sector) %>%
summarise(across(.fns = list(mean = mean,sd = sd,n = ~ n())),.groups = 'drop')=
# A tibble: 2 x 4
# sector math_mean math_sd math_n
# <int> <dbl> <dbl> <int>
#1 0 11.4 7.08 3642
#2 1 14.2 6.36 3543
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。