如何在R语言中实现Oracle:row_number() 函数的功能

1、背景简介

作为一名数据分析师,经常会遇到剔除数据集中重复记录的情况。而且,更多的时候剔除重复记录是按照某一个字段的取值来剔除。以前用Oracle数据库的时候,使用语句:row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 来完成数据记录的剔重非常顺手且高效。那么在R语言中如何实现类似的功能呢?

2、R语言实现Oracle:row_number() 函数的功能

在R语言中,常用且功能强大的数据处理包dplyr能够较好的解决该问题。下面贴出一个示例。
R代码如下:

library(tidyverse)
library(dplyr)
test_tbl <- as_tibble(data.frame(x = c(1,rep(1:3,each = 2)) , y = c(20,21,23,24,24,1,0)))
test_tbl %>% 
  group_by(x) %>% 
  arrange(x,desc(y)) %>% 
  mutate(rank = rank(desc(y), ties.method = "first")) %>% 
  filter(rank ==1)

输出结果如下。该代码实现功能:将数据集test_tbl 按照变量x(在实际数据工作中通常是ID)分组,然后对每一组的多条数据记录,按照变量y的取值降序排列后,取每一组的第一条记录;从而完成数据记录的剔重。

《如何在R语言中实现Oracle:row_number() 函数的功能》 Paste_Image.png

    原文作者:monkeylan
    原文地址: https://www.jianshu.com/p/021347f90e99
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞