我使用统计程序 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
我花了一些时间试图自己解决它并且无法找到解决方案。
答案 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重命名摘要列名称需要一点点破解。 这样的东西,我无法测试你的数据。)