看板 R_Language 關於我們 聯絡資訊
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) 效能諮詢(我想讓R 跑更快) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我有一個資料格式test為: name type score reviews download 1 G1 game 3 1000 5 2 G2 game 4 2000 1000 3 G3 game 4 1000 40 4 M1 music 5 500 60 5 M2 music 2 200 30 6 M3 music 3 300 40 7 M4 music 4 400 50 8 G4 game 4 500 2000 9 G5 game 2 887 700 10 M5 music 1 600 300 依照下載數排序後,我想要取各分類的前3項進行敘述統計分析, 也就是取出編號8.2.9的game,與10.5.7的music。 目前的寫法是利用dplyr的group_by,但是在取各分類的前3項遇到困難... test %>% arrange(-download) %>% group_by(type) %>% summarise(Mean_score = mean(score), Mean_reviews = mean(reviews), Mean_download = mean(download) %>% arrange(-Mean_download) 這樣子就只能取全部分類各變數的平均數而已, 如果我想要加入head(3),該怎麼加入呢? 還是只能笨笨的先將各群拆成各自的資料檔... 然後我也想要藉此取出各分類的前3名, 之前若不分類的話,很好取出前3名的名單: test %>% arrange(-download) %>% head(3) %>% select(name) %>% .$name 但如果要取出各族群各自的前3名,我又卡住了。 [關鍵字]: dplyr, 分類 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.51.15 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1491297343.A.DC0.html ※ 編輯: bedroom0204 (36.225.51.15), 04/04/2017 17:23:17 ※ 編輯: bedroom0204 (36.225.51.15), 04/04/2017 17:23:40
x88776544pc: group_by(...)後接%>%top_n(n=i)取各組前i個 04/04 17:58
alex13587: test%>%group_by(type)%>%top_n(n=3,wt=download)%>%su 04/05 16:25
alex13587: mmarise... 04/05 16:25
alex13587: 這樣會回傳每個type依照download數排序前三名的各項目 04/05 16:26
alex13587: 平均 04/05 16:26
alex13587: 如果你最後面還有arrange(... 那就還會再排序一次 04/05 16:27
謝謝兩位回答,然後我發現...因為我下載數常常會有同樣的數值, 所以幾乎都會超過設定前n名的數量,還以為是自己哪裡寫錯了XD。 ※ 編輯: bedroom0204 (219.68.113.107), 04/06/2017 01:55:23