通过分类变量为连续变量创建汇总表

时间:2017-01-18 07:09:36

标签: r

我是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)) 

[第三个命令的功劳归于回答这个问题的人之一。]

1 个答案:

答案 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))