如何从原DataFrame中简便移除特定日期前的男性数据?
解决方法
你的核心需求是移除原DataFrame中**男性(geschlecht == 1)且日期早于/等于2023-07-21 10:22:24**的行,直接更新原DataFrame即可,以下是几种简便实现方式:
方法1:dplyr筛选保留行(推荐)
直接筛选需要保留的记录并覆盖原对象,逻辑更清晰:
# 写法1:排除要移除的行 test <- dplyr::filter(test, !(geschlecht == 1 & datetime <= "2023-07-21 10:22:24")) # 写法2:拆分逻辑(保留非男性,或男性但日期晚于指定时间) test <- dplyr::filter(test, geschlecht != 1 | datetime > "2023-07-21 10:22:24")
方法2:base R原生subset函数
如果不想用dplyr,可直接用base R的subset:
test <- subset(test, !(geschlecht == 1 & datetime <= "2023-07-21 10:22:24"))
方法3:dplyr反连接
先筛选出要移除的行,再通过反连接得到剩余数据:
# 定义要移除的数据集 to_remove <- dplyr::filter(test, geschlecht == 1 & datetime <= "2023-07-21 10:22:24") # 反连接更新原DataFrame test <- dplyr::anti_join(test, to_remove)
原代码的问题说明
你当前的代码men <- dplyr::filter(test, !datetime > "2023-07-21 10:22:24" & !geschlecht == 1)逻辑有误,它筛选的是日期早于指定时间且非男性的行,和你要移除的目标完全相反,所以无法实现需求。
内容的提问来源于stack exchange,提问作者Christina
相关产品推荐
相关产品推荐

