简化由R中的分类变量分层的汇总统计输出

时间:2013-05-04 17:37:01

标签: r categorical-data

正在使用的程序

我使用统计程序 R 来分析一些数据,并且可能是一个相当简单的问题。

问题的背景

我有一个充满数字值的变量study_data$LN_reviewed。我还有一个名为study_data$Gender的变量,它具有研究中每个主题的性别。我想计算一些按性别分层的简单汇总统计数据。使用下面的代码很容易做到:

> by(study_data$LN_reviewed, study_data$Gender, summary)

study_data$Gender: FEMALE
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
2.00   13.00   19.00   27.77   35.50  125.00 
------------------------------------------------
study_data$Gender: MALE
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
1.00   12.00   19.00   26.98   34.00  122.00 

我的问题

如何让 R 以更易于理解的格式显示此信息?具体来说,我想要一个有两行的表,名为“FEMALE”和“MALE”,以及六列,名为“Min。”,“1st Qu。”,“Median”,“Mean”,“3rd Qu”。和“Max。”,如下所示。

       Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
FEMALE 2.00   13.00   19.00   27.77   35.50  125.00
MALE   1.00   12.00   19.00   26.98   34.00  122.00

我花了一些时间试图自己解决它并且无法找到解决方案。

2 个答案:

答案 0 :(得分:3)

do.call(rbind , by(study_data$LN_reviewed, study_data$Gender, summary))

答案 1 :(得分:1)

这就是plyr的用途(/或dplyr用于大型数据帧), Split-Apply-Combine 范例:

require(plyr)

summary_by_gender <- function(...) {
                         ss <- summary(...)
                         return(ftable(ss, col.vars=names(ss))
                     }

ddply(study_data, .(Gender), summarize, summary_by_gender(LN_reviewed) )

(防止ftable重命名摘要列名称需要一点点破解。 这样的东西,我无法测试你的数据。)