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

作者: monkeylan | 来源:发表于2017-02-10 15:31 被阅读569次

    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的取值降序排列后,取每一组的第一条记录;从而完成数据记录的剔重。

    Paste_Image.png

    相关文章

      网友评论

        本文标题:如何在R语言中实现Oracle:row_number() 函数的

        本文链接:https://www.haomeiwen.com/subject/lfwgittx.html