在R中对不同的重复行进行排序和保持

时间:2019-03-28 12:45:43

标签: r dplyr

我有一个数据框,其中的一列(名称)包含以下值A,A,A,B,C,D,D,A,A,A,A,F,F,E,C,B 我想获取这些值的含义的列表,我的结果应类似于A,B,C,D,AF,E,C,B。

我尝试了以下代码:

data <- data %>%
group_by(ID) %>%
arrange(TIME) %>%
distinct(NAME)

但是,distinct允许一个名称仅在列表/序列中包含一次。

还尝试通过指定fastmatch对库fmatch(NAME, unique(NAME)进行尝试,但遇到错误。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我们可以使用rleid中的data.table根据相邻元素之间的值差创建组,然后根据slice的第一行

library(dplyr)
library(data.table)
data %>%      
    arrange(ID, TIME) %>%
    group_by(ID, grp = rleid(NAME)) %>%
    slice(1)

数据

data <- data.frame(ID = rep(1:3, each = 5), TIME = Sys.Date() + 1:15,
         NAME = c("A","A","A","B","C","D","D","A","A","A","F","F","E","C","B"))