r语言rank降序_巧用R中的各种排名窗口函数
r语⾔rank降序_巧⽤R中的各种排名窗⼝函数
原标题:巧⽤R中的各种排名窗⼝函数
前⾔
穿越火线网剧在sql中巧⽤窗⼝函数可以解决很多复杂的问题,窗⼝函数有4种函数类型:排名函数、偏移函数、聚合函数和分布函数,详细介绍可以浏览:
铠甲勇士黑犀侠R语⾔中,也有与sql中⼀⼀对应的4种类型的窗⼝函数,除了聚合函数有点差异之外,其他3种类型的窗⼝函数完全⼀致,⽽且在R中使⽤管道函数书写窗⼝函数代码,⽐sql中更容易理解。分4部分讲⼀下:排名函数、偏移函数、聚合函数和分布函数,本节介绍⼀下R语⾔中的排名函数。
函数对⽐
SQL中窗⼝函数语句中over语句中两个关键词:partition by和order by,R语⾔中也有与之⼀⼀对应的函数:
改号怎么改
SQL中排名函数有4个:row_number()、rank()、dense_rank()和ntile(),R语⾔中也有4个排名函数与之对应,函数名也⼏乎相同:
函数使⽤
数据使⽤之前的数据:
1 row_number函数
R语⾔中的row_number函数与sql中的row_number函数相同,对group_by后⾯字段进⾏分组,按照or
der_by后⾯字段排序,⽣成⼀个连续不重复的编码,对每个客户按照购买时间升序排序编码:
输出结果与sql输出结果有⼀点不同:R语⾔中输出结果的顺序与原始数据的顺序⼀致,⽽sql中是按照购买时间的先后顺序输出的,若想输出结果与sql中⼀致,则:
之前说过,使⽤管道函数连接的语句执⾏顺序和书写顺序⼀致,上⾯语句可以理解为:1、使⽤group_by对指定的user_no字段分组;2、使⽤order_by函数对组内数据按照购买时间升序排列编码,增加⼀个新字段;3、使⽤arrange对指定的字段user_no和buy_date排序。
2 min_rank函数
R语⾔中的min_rank函数与sql中的rank函数相同,row_number函数对order_by后⾯字段相同的记录编码是不同的,min_rank就是解决这个问题,对相同的记录编码相同:
同样为了得到与sql中相同的输出结果,则:
u盾是什么3 dense_rank函数
R语⾔中的dense_rank函数与sql中的dense_rank函数相同,min_rank编码出现跳号现象,⽽dense_rank函数编码不会跳号:
同样得到与sql中相同的输出结果:
4 ntile函数
R语⾔中的ntile函数与sql中的ntile函数相同,把每⼀组分成⼏块,块数由参数n决定:
同样为了得到与sql中输出结果⼀致:教师节贺卡怎么制作
总结
珍惜时间的故事简单介绍R语⾔中4个排名窗⼝函数,函数名⼏乎与sql中的4个排名窗⼝函数⼀样(除了min_rank与rank),但R语⾔的排名窗⼝函数的输出结果与sql中的输出结果有点不同:R语⾔的数据结果不改变原来的数据顺序,⽽sql中的输出结果改变了原数据的顺序,若想得到与sql中⼀样的输出结果,在R中使⽤arrange对相应的字段进⾏排序即可。返回搜狐,查看更多
责任编辑:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。