我有一个很大的数据集,其中包含来自图像的元数据。对于某些相机,日期设置有误,我正在尝试更正。似乎很简单,但是我不弄清楚该数据集怎么办。下面的代码本质上显示了我要尝试执行的操作,但是,我想在不创建子集的情况下调整完整数据帧内的值。
library(lubridate)
data <- data.frame(camera= c("1", "1", "2", "2"),
date = c("2000-1-02 01:02:03", "2000-1-02 01:02:03","2000-2-02 01:02:03","2000-2-02 01:02:03"))
data$date <- as.POSIXct(data$date)
camera1 <- subset(data, camera== "1")
camera1$date <- camera1$date - months(1)
我试图使用dplyr软件包和'if'函数使它工作,但是POSIXct格式似乎使事情变得有些复杂。最好我会同时对多个摄像机进行相同的时间调整。
假设您有几台摄像机,每个摄像机都有自己的偏移时间。相机1快一个月,相机3快一个月。
data %>%
mutate(date =
case_when(camera == 1 ~ date - months(1),
camera == 3 ~ date + months(1),
TRUE ~ date))
camera date
1 1 1999-12-02 01:02:03
2 1 1999-12-02 01:02:03
3 2 2000-02-02 01:02:03
4 2 2000-02-02 01:02:03