我有一个数据框,其中一列 (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/