【问题标题】:Removing/Filtering rows based on condition in R根据 R 中的条件删除/过滤行
【发布时间】:2021-12-08 03:32:20
【问题描述】:

我想删除在 EXP_MAN 列中得分 2 和在 Ethnicity_Rescuer 列中得分 1 的参与者。

我使用了下面的代码,它成功了。

mydata <- mydata %>% 
  mutate(to_exclude = 
           case_when(EXP_MAN == 2 & 
                       (Ethnicity_Rescuer ==1) ~ 1)) %>%
  mutate(to_exclude = replace(to_exclude, is.na(to_exclude), 0))

mydata <- mydata %>% filter(to_exclude == 0)

但是,这段代码看起来很复杂,我相信应该有一个更简单的解决方案。

我尝试使用以下代码过滤掉参与者,但没有成功。只是想知道在这种情况下删除参与者的最简单代码是什么。

mydata <- mydata %>% filter(EXP_MAN != 2 & Ethnicity_Rescuer !=1)

【问题讨论】:

  • mydata &lt;- mydata %&gt;% filter(EXP_MAN != 2 &amp; Ethnicity_Rescuer !=1) 看起来正确。你是什​​么意思它不起作用? R 是否返回一些错误?
  • 我正在努力解决类似的问题。这里链接网站页面stackoverflow.com/questions/69649237/…。有人可以帮忙吗?

标签: r conditional-statements filtering


【解决方案1】:

您可以使用子集函数来选择一个数据集和一个/几个条件

subset(mydata,EXP_MAN != 2 & Ethnicity_Rescuer !=1)

【讨论】:

  • 所以在我使用的代码的情况下,我只删除了一个在 EXP_MAN 中得分为 2 并且在 Ethnicity_Rescuer 中得分为 1 的参与者,这正是我想要的。在其他代码的情况下,mydata &lt;- mydata %&gt;% filter(EXP_MAN != 2 &amp; Ethnicity_Rescuer !=1)(以及建议的subset(mydata,EXP_MAN != 2 &amp; Ethnicity_Rescuer !=1,它会删除在这两个变量中的任何一个上得分为 1 或 2 的所有参与者(因此超过 170 个)。
  • 这不是您想要的吗,移除所有患有这两种疾病的患者? "我想删除在 EXP_MAN 列中得分为 2 并且在 Ethnicity_Rescuer 列中得分为 1 的参与者"
  • 它删除了那些得分为 1 OR 2 而不是 2 和 2 ...
猜你喜欢
  • 2020-09-02
  • 2022-12-01
  • 2021-06-25
  • 2013-09-06
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2018-09-21
  • 2022-09-29
相关资源
最近更新 更多