1

正在使用的程序

我正在使用统计程序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

我花了一些时间试图自己解决它,但一直找不到解决方案。

4

2 回答 2

4

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

于 2013-05-04T17:45:14.763 回答
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 重命名汇总列名称,需要进行一些小改动。类似的东西,我无法在您的数据上进行测试。)

于 2014-03-09T17:02:44.597 回答