如果在另一列中满足条件,则更改日期列
Changing date column if condition is met in another column
我有一个包含图像元数据的大型数据集。对于某些相机,日期设置错误,我正在尝试更正。这看起来很简单,但我无法弄清楚如何在不分解数据集的情况下做到这一点。下面的代码基本上显示了我正在尝试做的事情,但是,我想在不创建子集的情况下调整完整数据框中的值。
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
我有一个包含图像元数据的大型数据集。对于某些相机,日期设置错误,我正在尝试更正。这看起来很简单,但我无法弄清楚如何在不分解数据集的情况下做到这一点。下面的代码基本上显示了我正在尝试做的事情,但是,我想在不创建子集的情况下调整完整数据框中的值。
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