我有一个名为日期的数据框,其中包含 4 列(数字、A、B 和差异)。 Number 是一个分组变量。 A 和 B 都是日期列。 'Diff' 是包含 A 和 B 之间的天数的列。
在每个“数字”中,如果“差异”包含任何负数,我想删除整个组。或者换句话说:如果所有值都是正数,则只保留组。
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
我想要的结果是“数字”为 3 的组,其中所有值为正。组号 1 和组号 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
或者使用dplyr
library(dplyr)
df1 %>%
group_by(Number) %>%
filter(all(Diff>=0))
关于r - 选择所有值为正的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712287/