作者bedroom0204 (khkh)
看板R_Language
标题[问题] group_by後能否筛选前n笔资料运算
时间Tue Apr 4 17:15:40 2017
程式谘询(我想用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://webptt.com/cn.aspx?n=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
1F:→ x88776544pc: group_by(...)後接%>%top_n(n=i)取各组前i个 04/04 17:58
2F:推 alex13587: test%>%group_by(type)%>%top_n(n=3,wt=download)%>%su 04/05 16:25
3F:→ alex13587: mmarise... 04/05 16:25
4F:→ alex13587: 这样会回传每个type依照download数排序前三名的各项目 04/05 16:26
5F:→ alex13587: 平均 04/05 16:26
6F:推 alex13587: 如果你最後面还有arrange(... 那就还会再排序一次 04/05 16:27
谢谢两位回答,然後我发现...因为我下载数常常会有同样的数值,
所以几乎都会超过设定前n名的数量,还以为是自己哪里写错了XD。
※ 编辑: bedroom0204 (219.68.113.107), 04/06/2017 01:55:23