首页 > 解决方案 > R dplyr:对不同的组使用不同的条件进行过滤

问题描述

我有一个由 ID 和年份标识的面板数据集。我需要按变量“小时”过滤数据集,但是对于不同的年份,我想对小时施加不同的标准。

这是我正在尝试做的,但由于if与向量不兼容,因此以下代码不起作用

data <- data %>%
           filter(
             if(year == 2014 | year == 2016){
               (hours >= 35 & hours <= 105) 
             }else if (year == 2012){
               (hours >= 30 & hours <= 100) 
             }
           )

一个类似的问题是如何仅对某些年份进行过滤而忽略其余年份。

标签: r

解决方案


data %>%
  filter((year %in% c(2014, 2016) & between(hours, 35, 105)) | (year == 2012 & between(hours, 30, 100)))

推荐阅读