r - 在 R 中排序和保持不同的重复行

标签 r dplyr

我有一个数据框,其中一列 (NAME) 包含以下值 A,A,A,B,C,D,D,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 允许一个 NAME 在列表/序列中只包含一次。

此外,通过指定 fmatch(NAME, unique(NAME) 尝试使用库 fastmatch,但遇到错误。

谢谢你的帮助!

最佳答案

我们可以使用 data.table 中的 rleid 根据相邻元素之间的值差异创建组,然后 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"))
        

关于r - 在 R 中排序和保持不同的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55397998/

相关文章:

r - 计算列数,直到每行找到一个值

c++ - 我们可以将 Rcpp 与多个 C++ 函数一起使用吗?

R通过唯一列对(B-A和A-B)计算值的总和,同时保持两对

r - 使用 dplyr 添加基于最大行值的新列?

r - 使用 dplyr 函数进行管道化时使用方括号进行子集化

r - 在 R 中,使用 glm 函数和 gamma 系列的默认链接函数是什么

r - R 中具有 95% 置信区间的箱线图

r - 函数按字面意思接受参数而不是参数的值

r - 在 R 中使用 glm(..) 获得 95% 的置信区间

r - 在 R 中计算多年来所有国家/地区对的相关性