【发布时间】:2021-03-25 23:23:19
【问题描述】:
我有很多数据框,每个都有几列。其中两列是time 和value。
小例子
library(tidyverse)
df <- approx(seq(1,10,1), c(1,5,7,11,4,12,30, 20, 10, 9)) %>%
as.data.frame() %>%
rename(time = x, value = y)
目标
我想从每个数据框中删除所有行,从第一次开始value > 10。
当数据框包含values > 10时,解决方案如下:
df <- df %>%
filter(row_number() <= first(which(value > 10))-1)
但是,也有value不超过10的数据框,例如,
df <- approx(seq(1,10,1), c(1,5,7,1,4,2,1, 2, 1, 9)) %>%
as.data.frame() %>%
rename(time = x, value = y)
在这种情况下,不应过滤数据框(因为未达到value 阈值)。但是,当我使用上面的 filter 解决方案时,它会返回一个空数据框。
问题
你将如何在dplyr 管道中解决这个问题?是否可以进行条件过滤?
【问题讨论】:
标签: r dataframe filter dplyr pipe