r - 创建时间间隔并为每个唯一时间间隔分配唯一 ID
问题描述
我有一组时间已经转换为时间间隔,我想为每个唯一的时间间隔分配一个唯一的 ID。数据框 y 看起来像:
start end
01:00:00 05:00:00
13:00:00 17:00:00
12:00:00 16:00:00
01:00:00 05:00:00
13:00:00 17:00:00
我使用以下代码创建了一个时间间隔:
y$interval = data.frame(interval=paste(start,end))
结果看起来像
start end interval
01:00:00 05:00:00 01:00:00 05:00:00
13:00:00 17:00:00 13:00:00 17:00:00
12:00:00 16:00:00 12:00:00 16:00:00
01:00:00 05:00:00 01:00:00 05:00:00
13:00:00 17:00:00 13:00:00 17:00:00
我现在想在 Y 中创建一个新列,为每个唯一时间间隔分配一个唯一 ID:
start end interval ID
01:00:00 05:00:00 01:00:00 05:00:00 1
13:00:00 17:00:00 13:00:00 17:00:00 2
12:00:00 16:00:00 12:00:00 16:00:00 3
01:00:00 05:00:00 01:00:00 05:00:00 1
13:00:00 17:00:00 13:00:00 17:00:00 2
我尝试过使用 dplyr 的 group_indice:
y$id = group_indices(y$interval)
但它为每个间隔分配 ID 号 1。我应该怎么办?
非常感谢!
解决方案
我正在研究一个与@H 1 刚刚所做的非常相似(相同?)的答案。请注意,所有列都是字符,因为在您的示例中并不清楚您是否真的在使用时间列。
library(dplyr)
y <- data.frame(
stringsAsFactors = FALSE,
start = c("01:00:00","13:00:00",
"12:00:00","01:00:00","13:00:00"),
end = c("05:00:00","17:00:00",
"16:00:00","05:00:00","17:00:00")
)
y %>%
mutate(interval = paste(start, end)) %>%
group_by(interval) %>%
mutate(id = group_indices())
#> # A tibble: 5 x 4
#> # Groups: interval [3]
#> start end interval id
#> <chr> <chr> <chr> <int>
#> 1 01:00:00 05:00:00 01:00:00 05:00:00 1
#> 2 13:00:00 17:00:00 13:00:00 17:00:00 3
#> 3 12:00:00 16:00:00 12:00:00 16:00:00 2
#> 4 01:00:00 05:00:00 01:00:00 05:00:00 1
#> 5 13:00:00 17:00:00 13:00:00 17:00:00 3
推荐阅读
- javascript - 空手道 UI-空手道是否与 ngWebDriver 集成?
- java - 添加 LTV 签名后某些 pdf 文件已损坏
- php - strftime 给我返回空字符串
- c# - 为什么 Entity Framework Core 一对多关系只创建左连接?IsRequired 不起作用
- azure-logic-apps - 具有 Datalake API 连接的逻辑应用程序的 ARM 模板部署
- avro - 使用 Spring Cloud Stream 处理 Avro 反序列化异常
- dapr - dapr 自定义中间件@组件级
- javascript - 带有鼠标滚轮滚动的整页滑块
- swift - 如果我输入得太快,为什么我的搜索栏不起作用?
- postgresql - 如何将自定义变量添加到 Sqitch,以在目标 postgres 中使用