2011-02-05 85 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)))是你想要的東西?