我有一组用户推荐
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是有序因素列表数字分数和投票是他们的频率?
答案 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)))
就像你想要的那样?