r - 在R中排序和保持不同的重复行
问题描述
我有一个数据框,其中一列(名称)包含以下值 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
允许一个名称在列表/序列中仅包含一次。
fastmatch
此外,通过指定尝试使用库fmatch(NAME, unique(NAME)
,但遇到错误。
感谢您的帮助!
解决方案
我们可以使用rleid
fromdata.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"))
推荐阅读
- javascript - 如何在 1v1 聊天中链接用户 ID?
- python - 在使用 mqtt 接收到的每条消息上更改 QtLabel
- r - 通过使用涉及两列的两个单独的选择条件使用 dplyr 进行过滤
- java - 我正在尝试将元素编号从一个数组复制到java中另一个数组的输出
- javascript - 我不知道如何应用 async/await 概念
- python - Collatz 循环结构
- linux - 在 Bash 中以 'yyyymmdd' 格式获取前一天
- native - 是否可以从本机应用程序调用 PWA?
- amazon-web-services - 如果 Web 服务器在 3 层应用程序中被删除,架构建议
- c# - Task.Run 中的异步 lambda 与常规 lambda