如何去除不满足条件的值?

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

我有一个包含多个日期时间变量的数据集。我想删除变量中不满足条件的值。例如,我有 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 应删除。

但是,在我使用我的代码后,数据集保持不变。我不知道为什么。如果您能帮忙,谢谢。

r datetime comparison
1个回答
0
投票

只需确保覆盖

final
作为最后一步:

final <- final[with(final, !(delete=='delete')),]
© www.soinside.com 2019 - 2024. All rights reserved.