r - 根据时间戳加入两个数据集并组合它们的描述符变量
问题描述
我有两个像这些示例数据(df1 和 df2)这样的数据框。我需要加入两个数据集以获取两个数据帧 df1 和 df2,并结合它们的描述符变量(运动),因此每当任何状态发生变化时,都会在 df1 上创建一个新记录:
这里的目的是为每个观看间隔添加运动状态变量,我想要这个结果:
date id viewing_start viewing_end motion
2019-01-01 18404885 155900 155959 ON
2019-01-01 18404885 160400 160859 ON
2019-01-01 18404885 170100 170259 ON
2019-01-01 18404885 170400 170459 ON
2019-01-01 18404885 170500 171259 ON
2019-01-08 18404885 201100 201859 idle
我的数据集( viweing_start、viewing_end、start_time 和 end_time 最初是 H:M:S 格式(时间)
df1 <- data.frame(
date = c("2019-01-01", "2019-01-01", "2019-01-01", "2019-01-01",
"2019-01-01", "2019-01-08", "2019-01-08", "2019-01-08",
"2019-01-08", "2019-01-08", "2019-01-08", "2019-01-08",
"2019-01-08", "2019-01-08", "2019-01-08", "2019-01-08",
"2019-01-08", "2019-01-08", "2019-01-08"),
id = c(18404885, 18404885, 18404885, 18404885, 18404885,
18404885, 18404885, 18404885, 18404885, 18404885,
18404885, 18404885, 18404885, 18404885, 18404885, 18404885,
18404885, 18404885, 18404885),
viewing_start = c(155900, 160400, 170100, 170400, 170500, 201100, 202000,
203300, 203700, 204100, 204900, 205200, 205600, 210000,
210200, 210800, 211700, 212400, 212900),
viewing_end = c(155959, 160859, 170259, 170459, 171259, 201859, 202159,
203459, 203859, 204759, 204959, 205259, 205659, 210059,
210659, 211659, 211859, 212759, 220259)
) %>%
mutate(viewing_start = anytime::anytime(paste0(date," ", viewing_start), tz = "CET"),
viewing_end = anytime::anytime(paste0(date," ", viewing_end) , tz = "CET"))
df2 <- data.frame(stringsAsFactors=FALSE,
id = c(18404885, 18404885, 18404885, 18404885, 18404885, 18404885,
18404885, 18404885, 18404885, 18404885, 18404885),
date = c("2019-01-01", "2019-01-01", "2019-01-01", "2019-01-01",
"2019-01-01", "2019-01-08", "2019-01-08", "2019-01-08",
"2019-01-08", "2019-01-08", "2019-01-08"),
start_time = c("030000", "033715", "080615", "225215", "250000",
"030000", "033700", "082915", "204100", "205100",
"220315"),
end_time = c("033715", "080615", "225215", "250000", "030000",
"033700", "082915", "204100", "205100", "220315",
"241245"),
motion = c("idle", "idle", "ON", "idle", "idle", "idle", "idle", "ON",
"WARN", "OFF", "ON")) %>%
mutate( start_time = paste0(date," ", as.character(start_time)),
end_time = paste0(date," ", as.character(end_time))) %>%
mutate(start_time = anytime::anytime(start_time),
end_time = anytime::anytime(end_time))
解决方案
推荐阅读
- javascript - 将网络 C 程序的实时数据发送到浏览器客户端进行绘图
- json - 无法使用 esp32 和 Arduinojson 从 Googlesheet 获取数据
- python - 当 python 对象包含在字符串中时,如何获取它的类型?
- c# - 如何将datagridview导出到excel
- python - 无法导入 torch.distributed.rpc
- android - 在 Android 中通过推送通知发送阿拉伯文本时无法将布局切换到 RTL
- swift - 如何更改瓷砖地图中瓷砖的SpriteKit瓷砖组?
- graphql - GraphQL 异步查询结果
- sql - 如何检查数组中的任何字符串是否包含其他数组中的任何其他字符串(子字符串)?(PostgreSQL)
- arrays - 由于性能限制,我的 Python 代码通过了简单的测试,但没有通过扩展测试