R中的频率表摘要?

时间:2011-02-05 11:55:03

标签: r frequency-analysis

我有一组用户推荐

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

并希望使用summary(review)来显示基本属性 mean,median,quartiles和min max

但它会回复两列的摘要。我没有使用data.frame,因为订购了'Star'因子。 如何告诉R Star是有序因素列表数字分数和投票是他们的频率?

3 个答案:

答案 0 :(得分: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 

答案 1 :(得分:2)

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

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

您应该将data.frame转换为vector:

( 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 

编辑 (关于@Prasad的建议)

由于vts是一个有序因子,您应该将其转换为数字,因此计算摘要(此时我将忽略背景统计问题):

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

答案 2 :(得分:0)

只是为了澄清 - 当你说你想要“平均值,中位数,四分位数和最小值/最大值”时,你说的是星数?例如,意味着= 4.062颗星? 那么使用一个L3xa的代码,summary(as.numeric(as.character(vts)))就像你想要的那样?