r - 在 r 中动态删除行
问题描述
我需要根据日期标准从数据框中动态删除行。
如果开始日期大于读取的最后开始日期,并且结束日期小于读取的最后结束日期,我想从数据集中删除该行。
有人可以提出解决方案吗?它不需要带有 for 循环。
for (i in 2:nrow(df)) {
if ((df$start_date[i] > df$start_date[i-1]) & (df$end_date[i] < df$end_date[i-1])){
REMOVE ROW [i] from dataframe
}
}
解决方案
正如@morgan121 所述,您可以使用lag
从上一行获取值。filter
但是,您可以使用它,filter
保留满足条件的行,因此您可以尝试:
library(dplyr)
df %>%
filter(!(start_date > lag(start_date, default = first(start_date)) &
end_date < lag(end_date, default = first(end_date))))
推荐阅读
- html - 在没有任何唯一标识符的硒中定位元素
- python - 通过命令行修复python安装
- twitter-bootstrap - 引导断点如何区分具有相同分辨率的移动设备和全尺寸显示器?
- arrays - 试图弄清楚为什么我的 C 程序只抓取我重复的数字之一
- python - Discord bot:如何检查网址是否有效?
- r - 如何在R中将字符列转换为日期时间
- powershell - 用于关闭 VM 并分离 ISO 的 vSphere 脚本
- node.js - 在 nginx 不工作的情况下为节点代理启用 hsts
- php - php 代码有效,但警告:未定义的数组键 php
- node.js - 如何解决 sequelize.import 不是函数?