2011-02-05 84 views
3

我有一组用户recommandationsR中的频率表摘要?

review=matrix(c(5:1,10,2,1,1,2), nrow=5, ncol=2, dimnames=list(NULL,c("Star","Votes"))) 

,并想用summary(review)显示基本属性均值,中位数,位数和最小值最大值

但它给出了两列的总结。我不使用data.frame,因为'星'这个因素是有序的。 如何告诉R星是 有序的因素列表 数字分数和票是他们的频率?

+0

我刚刚看到了标签频率分析。你在找table()吗?或应急表? – 2011-02-05 13:34:55

+0

我试过表没有工作。我需要做的意思,中位数,四分位数。我不想亲手做。这是我期望从统计框架中获得的最小值 – 2011-02-05 13:51:35

+3

请注意,未定义因素_的加权平均值没有被定义,因为没有将它称为数字的整个观点是不知道两者间的间隔。你必须指定数字分数来采取手段。 – Aniko 2011-02-05 15:37:24

回答

5

如果Star应该是一个有序因子,我并不完全确定你的意思。但是,在示例中给出的Star实际上是一组数值,您可以使用以下内容:

library(Hmisc) 

R> review=matrix(c(5:1,10,2,1,1,2), nrow=5, ncol=2, dimnames=list(NULL,c("Star","Votes"))) 

R> wtd.mean(review[, 1], weights = review[, 2]) 
[1] 4.0625 

R> wtd.quantile(review[, 1], weights = review[, 2]) 
    0% 25% 50% 75% 100% 
1.00 3.75 5.00 5.00 5.00 
2

我不明白是什么问题。你为什么不使用data.frame

rv <- data.frame(star = ordered(review[, 1]), votes = review[, 2]) 

应该转换data.frame矢量:

(vts <- with(rv, rep(star, votes))) 
[1] 5 5 5 5 5 5 5 5 5 5 4 4 3 2 1 1 
Levels: 1 < 2 < 3 < 4 < 5 

然后做总结......我只是不知道什么样的总结,因为summary会带给你回到起点。 O_O

summary(vts) 
1 2 3 4 5 
2 1 1 2 10 

编辑(上@普拉萨德的建议)

由于vts是一个有序的因素,你应该把它转换为数值,因此计算汇总(在这一刻,我会不顾背景统计问题):

nvts <- as.numeric(levels(vts)[vts]) ## numeric conversion 
summary(nvts) ## "ordinary" summary 
fivenum(nvts) ## Tukey's five number summary 
0

只是为了澄清 - 当你说你想“平均数,中位数,位数和最小值/最大值”,你来讲说话明星的数量?例如,平均= 4.062星? 然后使用aL3xa的代码,就像summary(as.numeric(as.character(vts)))是你想要的东西?