【发布时间】:2019-05-16 04:42:29
【问题描述】:
我有一个数据框 PatientA
Height Weight Age BMI
<dbl> <dbl> <dbl> <dbl>
1 161 72.2 27 27.9
2 164 61.0 21 22.8
3 171 72.0 30 24.6
4 169. 63.9 25 22.9
5 174. 64.4 27 21.1
6 160 50.9 22 19.9
7 172 77.5 22 26.3
8 165 54.5 22 20
9 173 82.4 29 27.5
10 169 76.6 22 26.9
我想获得每列的一些统计信息。我有下一个只处理分位数的工作代码
genStat <- PatientsA %>%
summarise_all(funs(list(quantile(., probs = c(0.25, 0.5, 0.75))))) %>%
unnest %>%
transpose %>%
setNames(., c('25%', '50%', '75%')) %>%
map_df(unlist) %>%
bind_cols(data.frame(vars = names(PatientsA)), .)
我需要像这样在 summarise_all 中添加 mean 和 sd
genStat <- PatientsA %>%
summarise_all(funs(mean,sd,list(quantile(., probs = c(0.25, 0.5, 0.75))))) %>%
unnest %>%
transpose %>%
setNames(., c('mean','sd','25%', '50%', '75%')) %>%
map_df(unlist) %>%
bind_cols(data.frame(vars = names(PatientsA)), .)
这种简单的方法无法返回下一个错误:
名称错误(对象)
我是 R 的新手,那么完成这项任务的正确语法是什么?
【问题讨论】:
-
你可能想看看skimr包。
-
如果您在尝试设置名称之前查看数据,它是否具有您期望的列数?尝试在
transpose之后立即停止,看看数据是什么样的。 -
好的,我知道会发生什么。但不知道如何快速修复。
-
你也许可以用
purrr::invoke_map做一些事情来一次调用带有参数列表的函数列表