我有一个包含多个日期时间变量的数据集。我想删除变量中不满足条件的值。例如,我有 date_time、date_time1、date_time2 (POSIXct 格式)。如果日期_时间1 < date_time < date_time2, then delete this row. This is the mock data frame:
final <- data.frame (id = (1,2,3,4,5,6,7,8),
date_time = ('2022-07-01 12:01:00', '2022-07-01 12:02:00', '2022-07-01 12:03:00', '2022-07-01 12:04:00', '2022-07-01 12:05:00', '2022-07-01 12:06:00', '2022-07-01 12:07:00', '2022-07-01 12:08:00'),
date_time1 = ('2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00', '2022-07-01 12:04:00'),
date_time2 = ('2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00', '2022-07-01 12:07:00'))
数据框应如下所示:
id date_time date_time1 date_time2
1 2022-07-01 12:01:00 2022-07-01 12:04:00 2022-07-01 12:07:00
2 2022-07-01 12:02:00 2022-07-01 12:04:00 2022-07-01 12:07:00
3 2022-07-01 12:03:00 2022-07-01 12:04:00 2022-07-01 12:07:00
4 2022-07-01 12:04:00 2022-07-01 12:04:00 2022-07-01 12:07:00
5 2022-07-01 12:05:00 2022-07-01 12:04:00 2022-07-01 12:07:00
6 2022-07-01 12:06:00 2022-07-01 12:04:00 2022-07-01 12:07:00
7 2022-07-01 12:07:00 2022-07-01 12:04:00 2022-07-01 12:07:00
8 2022-07-01 12:08:00 2022-07-01 12:04:00 2022-07-01 12:07:00
我的代码是:
final$delete <- ifelse((final$date_time > final$date_time1
& final$date_time < final$date_time2), 'delete', 'keep')
final[with(final, !(delete=='delete')),]
那么条件之后我想要什么:date_time1 < date_time < date_time2
id date_time date_time1 date_time2
1 2022-07-01 12:01:00 2022-07-01 12:04:00 2022-07-01 12:07:00
2 2022-07-01 12:02:00 2022-07-01 12:04:00 2022-07-01 12:07:00
3 2022-07-01 12:03:00 2022-07-01 12:04:00 2022-07-01 12:07:00
4 2022-07-01 12:04:00 2022-07-01 12:04:00 2022-07-01 12:07:00
7 2022-07-01 12:07:00 2022-07-01 12:04:00 2022-07-01 12:07:00
8 2022-07-01 12:08:00 2022-07-01 12:04:00 2022-07-01 12:07:00
id 5 和 id 6 应删除。
但是,在我使用我的代码后,数据集保持不变。我不知道为什么。如果您能帮忙,谢谢。
只需确保覆盖
final
作为最后一步:
final <- final[with(final, !(delete=='delete')),]