首页 > 解决方案 > 如何在我的描述性统计中显示因子名称而不是 R 中的数字

问题描述

在 DataAnalyst 数据(来自 Kaggle)中,我试图按状态(分类因子)显示评级(数值)的描述性统计数据。我能够成功显示除显示为 #s 的州名称之外的所有内容:

m<-aggregate(Rating~state, data=df,mean)
sd<-aggregate(Rating~state, data=df,sd)
n<-aggregate(Rating~state, data=df,length)
##summary descriptive table
(df.des <- cbind(n[,1], n=n[,2], mean=m[,2], sd=round(sd[,2],3),se=round(sd[,2]/sqrt(n[,2]),3)))

对于 df.des,我了解 n[,1] 显示您想要的 # col。我尝试了 n[,2] 来显示数字/状态。如何让表格显示名称而不是数字?PS“州”被列为字符(例如CA、NY、IL)而不是数字。

使用数字而不是状态类别的描述性统计

n 长什么样子

标签: rdataframeaggregate

解决方案


您可能希望在 中一次应用所有统计信息aggregate,这将节省一些痛苦。

f <- function(x) c(mean=mean(x), sd=sd(x), se=sd(x)/sqrt(length(x)), n=length(x))

r <- do.call(data.frame, aggregate(Rating ~ state, data=df, FUN=f))
r
#   state Rating.mean Rating.sd Rating.se Rating.n
# 1     A    4.000000  3.000000 1.7320508        3
# 2     B    3.666667  1.527525 0.8819171        3
# 3     C    6.666667  4.932883 2.8480012        3
# 4     D    5.000000  4.000000 2.3094011        3
# 5     E    7.333333  3.055050 1.7638342        3

注意:要了解我们为什么需要do.call(data.frame, .)这里,请参阅此答案。


数据:

set.seed(42)
df <- data.frame(Rating=sample(1:10, 15, replace=T),
                 state=rep(LETTERS[1:5], 3))

推荐阅读