【问题标题】:Filter a dataframe by a column if a condition is met in another colum with Dplyr R如果使用 Dplyr R 在另一列中满足条件,则按列过滤数据框
【发布时间】:2020-01-29 09:46:04
【问题描述】:

我无法在任何地方找到我的问题的答案。我有一个 R 数据框,如果在另一列中满足条件,我想按列的值进行过滤,否则不应过滤该值,理想情况下,我会使用 Dplyr 执行此操作。

对于我的数据框,我想仅在类型为“真实”的情况下过滤小于 1 的值(第三列)。

# My Dataframe 
dat = data.frame(dte = c("2011-01-01","2011-02-01","2011-03-01","2011-04-01","2011-05-01",
                          "2011-01-01","2011-02-01","2011-03-01"),
                  type = c("real","real","real","real","real","ts","ts","ts"),
                  value=rnorm(8))

# Desired output

         dte type      value
1 2011-01-01 real -1.0852682
3 2011-03-01 real -0.6664113
4 2011-04-01 real -0.7394061
5 2011-05-01 real -2.3819627
6 2011-01-01   ts -1.2122576
7 2011-02-01   ts  1.0923944
8 2011-03-01   ts -2.0373596

我试过这个,但它没有任何工作。


dat1 <- dat %>% filter(if(type == "real") value < 1 else value == value )

谁能给我任何想法?

非常感谢!

瑞秋

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    你可以使用:

    library(dplyr)
    dat %>% filter(type == "real" & value < 1 | type != "real")
    

    我们也可以在基础 R subset 中使用相同的条件

    subset(dat, type == "real" & value < 1 | type != "real")
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多