我有一个名为“日期”的数据框,有 4 列(数字、A、B 和 Diff)。Number 是一个分组变量。A 和 B 都是日期列。“Diff”是包含 A 和 B 之间的天数的列。
在每个“数字”中,如果“Diff”包含任何负数,我想删除整个组。或者反过来说:仅在所有值均为正值时才保留组。
Number A B Diff
1 2015-06-08 2015-06-06 -2
1 2015-06-08 2015-06-06 -2
2 2015-06-01 2015-05-25 -7
2 2015-06-01 2015-06-06 5
3 2015-06-04 2015-06-07 3
3 2015-06-04 2015-06-06 2
Run Code Online (Sandbox Code Playgroud)
我想要的结果是“Number”为 3 的组,其中所有值均为正数。组 Number 1 和 Number 2 均被删除,因为这两个组都包含至少一个负值。
尝试
library(data.table)
setDT(df1)[, if(!any(Diff < 0)) .SD, by = Number]
# Number A B Diff
#1: 3 2015-06-04 2015-06-07 3
#2: 3 2015-06-04 2015-06-06 2
Run Code Online (Sandbox Code Playgroud)
或者使用dplyr
library(dplyr)
df1 %>%
group_by(Number) %>%
filter(all(Diff>=0))
Run Code Online (Sandbox Code Playgroud)