groupwise summarize 正在返回 NA;还有来自网络的小例子
groupwise summarise is returning NA; also in minor example from the web
我尝试按如下方式生成年度汇总统计数据:
data %>%
group_by(year) %>%
summarise(mean.abc = mean(abc), mean.def = mean(def), sd.abc = sd(abc), sd.def = sd(def))
这段代码returns一个行向量,在各自的列中用NA填充
mean.abc mean.def sd.abc sd.def
1 NA NA NA NA
所以,我尝试解决这个问题并复制了一些示例
data(mtcars)
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(disp))
还有这个脚本returns
mean
1 230.7219
那么,我做错了什么?我正在加载以下包:
loadpackage( c("foreign","haven", "tidyverse", "plyr", "stringr", "eeptools", "factoextra") )
感谢您的支持!
您的问题是 plyr
包中的 summarise
函数没有按照您的预期执行。
查看两者的区别:
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
plyr::summarise(mean = mean(disp))
#> mean
#> 1 230.7219
和
mtcars %>%
group_by(cyl) %>%
dplyr::summarise(mean = mean(disp))
#> # A tibble: 3 x 2
#> cyl mean
#> <dbl> <dbl>
#> 1 4 105.
#> 2 6 183.
#> 3 8 353.
由于您的数据似乎有缺失值,这应该可以解决问题:
data %>%
group_by(year) %>%
dplyr::summarise(across(all_of(c('abc', 'def')),
.fns = list(mean = ~mean(.,na.rm=T),
sd = ~sd(.,na.rm=T))))
我尝试按如下方式生成年度汇总统计数据:
data %>%
group_by(year) %>%
summarise(mean.abc = mean(abc), mean.def = mean(def), sd.abc = sd(abc), sd.def = sd(def))
这段代码returns一个行向量,在各自的列中用NA填充
mean.abc mean.def sd.abc sd.def
1 NA NA NA NA
所以,我尝试解决这个问题并复制了一些示例
data(mtcars)
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(disp))
还有这个脚本returns
mean
1 230.7219
那么,我做错了什么?我正在加载以下包:
loadpackage( c("foreign","haven", "tidyverse", "plyr", "stringr", "eeptools", "factoextra") )
感谢您的支持!
您的问题是 plyr
包中的 summarise
函数没有按照您的预期执行。
查看两者的区别:
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
plyr::summarise(mean = mean(disp))
#> mean
#> 1 230.7219
和
mtcars %>%
group_by(cyl) %>%
dplyr::summarise(mean = mean(disp))
#> # A tibble: 3 x 2
#> cyl mean
#> <dbl> <dbl>
#> 1 4 105.
#> 2 6 183.
#> 3 8 353.
由于您的数据似乎有缺失值,这应该可以解决问题:
data %>%
group_by(year) %>%
dplyr::summarise(across(all_of(c('abc', 'def')),
.fns = list(mean = ~mean(.,na.rm=T),
sd = ~sd(.,na.rm=T))))