在r中动态删除行
我需要根据日期条件从数据框中动态删除行 如果开始日期大于上次读取的开始日期,并且结束日期小于上次读取的结束日期,则我希望从数据集中删除该行 有人能想出解决办法吗?它不需要使用for循环在r中动态删除行,r,for-loop,R,For Loop,我需要根据日期条件从数据框中动态删除行 如果开始日期大于上次读取的开始日期,并且结束日期小于上次读取的结束日期,则我希望从数据集中删除该行 有人能想出解决办法吗?它不需要使用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 }
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
}
}
for(2中的i:nrow(df)){
如果((df$start_date[i]>df$start_date[i-1])和(df$end_date[i]
如@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))))
库(dplyr)
df%>%
过滤器(!(开始日期>滞后(开始日期,默认值=第一个(开始日期))&
结束日期<滞后(结束日期,默认值=第一个(结束日期)))
查看dplyr
pckage中的lag()
函数。这将查看上一个元素,并将能够执行您想要的操作。检查这个:您也可以使用过滤器来反转条件(start\u datelag(end\u date)
),以保留所需的行。