我是R的初学者,并已从Stata / SPSS转换为R.我曾经在Stata中运行表格命令,通过对变量进行分组来生成连续变量的摘要。我有什么方法可以做到这一点吗?
我搜索了SO,我找到了这个帖子:How to get Summary statistics by group
虽然哈德利的地图功能确实帮助我提供四分位数,平均值和中位数,但我还需要更多。具体而言,特定四分位数中的元素数量,特定级别中元素的数量。
这里的虚拟代码:
data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66,
71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59)
grp <- factor(rep(LETTERS[1:4], c(4,6,6,8)))
df <- data.frame(group=grp, dt=data)
df %>%
data.table::as.data.table(.) %>%
split(.,by=c("group"),drop = TRUE,sorted = TRUE) %>%
purrr::map(~summary(.$dt))
和
describe(df$group)
给出两个不同的脱节集 - 一个仅提供关于分类变量的描述性统计,而另一个仅提供基本的六个函数。我需要看看四分之一内发生了什么。
我正在使用上面的Hmisc::describe
包。
如何使用R执行此操作?我真诚地感谢任何帮助。
示例输出:
我的示例输出看起来像这样,但是它会针对分类变量的四个级别中的每一个进行分组。通过这种方式,我可以分析每个分类变量级别的连续变量。现在,输出分布在三个不同的命令中,我很难理解发生了什么。
以下是命令:
df %>% data.table::as.data.table(.) %>% split(.,by=c("group"),drop = TRUE,sorted = TRUE) %>% purrr::map(~summary(.$dt))
df %>% data.table::as.data.table(.) %>% split(.,by=c("group"),drop = TRUE,sorted = TRUE) %>% purrr::map(~describe(.$dt))
df %>% group_by(group) %>% count(quartile = ntile(dt, 4))
[第三个命令的功劳归于回答这个问题的人之一。]
答案 0 :(得分:0)
data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66, 71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59)
grp <- c(rep(LETTERS[1:4], c(4,6,6,8)))
df <- data.frame(group=grp, dt=data)
library(dplyr)
df %>% group_by(group) %>% summarise(mdt = mean(dt, na.rm = T))