Creating a versatile descriptives table using dplyr
我正在尝试创建一个简单的代码,我可以反复使用它(以最小的调整),以便能够打印汇总统计信息表格。
一个可重现的示例为按组细分的变量
1 2 3 4 5 6 7 8 9 10 11 12 | data <- as.data.frame(cbind(1:100, sample(1:2), rnorm(100), rnorm(100))) names(data) <- c("ID","Group","V1","V2") library(dplyr) descriptives <- data %>% group_by(Group) %>% summarize( Mean = mean(V2) , SD = sd(V2) ) descriptives |
我想修改此函数,以便它将为我的数据集中的所有变量计算M和SD。
我希望能够用
我希望它以这种方式工作的原因是,我可以很容易地做一些事情,例如:
1 | vars <- names(data[3:4]) |
,并很快选择我要摘要统计的列。
我的愿望清单中的一些事项:
给定变量的M和SD应该彼此相邻,我想在每对变量的上方添加一列,并带有变量名。
我希望最终产品看起来像
我想使用dplyr,但我愿意接受其他选择。
我还想学习如何切换表的行和列,以便变量位于单独的行上,并且每个组都有一列(或两列,一列用于M,一列用于SD)。
排序有限制,但是如果我们使用
1 2 3 4 5 6 7 8 9 10 11 | library(dplyr) library(stringr) data %>% group_by(Group) %>% summarise_at(vars(vars), list(Mean = mean, SD = sd)) %>% select(Group, order(str_remove(names(.)[-1],"_.*")) + 1) # A tibble: 2 x 5 # Group V1_Mean V1_SD V2_Mean V2_SD # <dbl> <dbl> <dbl> <dbl> <dbl> #1 1 0.165 0.915 0.146 1.16 #2 2 0.308 1.31 -0.00711 0.854 |