r - 选择所有值为正的组

标签 r

我有一个名为日期的数据框,其中包含 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/

相关文章:

r - 从matlab代码到R代码的矩阵

r - geom_raster中值范围内的非线性颜色分布

r - 单独数据框中的配色方案

html - 从 R 中的 HTML 页面中提取文本

r - 将时间戳切成 R 中的数字槽

r - 将字符传递给公式

r - 将值从一个数据帧传输到另一个数据帧

r - 如果组具有特定值(查看前一个值),则保留组的行

r - 有什么方法可以将R生成的输出直接输入到Hive表中。

r - 如何处理重叠因子水平? (例如,在制作表格和图表时)