如果在另一列中满足条件,则更改日期列

问题描述 投票:0回答:1

我有一个很大的数据集,其中包含来自图像的元数据。对于某些相机,日期设置有误,我正在尝试更正。似乎很简单,但是我不弄清楚该数据集怎么办。下面的代码本质上显示了我要尝试执行的操作,但是,我想在不创建子集的情况下调整完整数据帧内的值。

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格式似乎使事情变得有些复杂。最好我会同时对多个摄像机进行相同的时间调整。

r posixct
1个回答
0
投票

假设您有几台摄像机,每个摄像机都有自己的偏移时间。相机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
© www.soinside.com 2019 - 2024. All rights reserved.