首页 > 解决方案 > 找到条件的对立面(使用 R tidyverse)以便将数据集拆分为 2

问题描述

我正在尝试将我的数据集(296 行)分成两部分,第一部分将有一些条件,另一部分只是与条件不匹配的数据集的其余部分。

我这样做了,第一部分找到了 81 行:

cardio = donnees %>%
  select(`Nausées/vomissements`,Vertige,Nystagmus,`Ataxie:Démarche ébrieuse`,`Motif si pas HINTS`,
         Alcool,Tabac,`atcd neuro`,Dyslipidémies,Diabète) %>%
  filter(Alcool == "Yes" |
         Tabac == "Yes"|
         `atcd neuro` == "3" |
         Dyslipidémies == "Yes"|
         Diabète == "Yes") 

然后我简单地使用“!” 找到其余的,但不幸的是我只有 77 行而不是预期的 215,

donnees %>%
  select(`Nausées/vomissements`,Vertige,Nystagmus,`Ataxie:Démarche ébrieuse`,`Motif si pas HINTS`,
         Alcool,Tabac,`atcd neuro`,Dyslipidémies,Diabète) %>%
  filter(!(Alcool == "Yes" |
           Tabac == "Yes" |
           `atcd neuro` == "3" |
           Dyslipidémies == "Yes" |
           Diabète == "Yes" ))

如果有人可以帮忙?非常感谢

标签: rdplyrdatasetlogical-operators

解决方案


anti_join@MonJeanJean 建议的我方法应该有效。但如果它没有,这里有一点不同的方法,想法是创建一个索引列并排除你不需要的列(让人想起 mysql 时代)。

donnees$index = 1:nrow(donnees)

cardio = donnees %>%
  select(`Nausées/vomissements`,Vertige,Nystagmus,`Ataxie:Démarche ébrieuse`,`Motif si pas HINTS`,
         Alcool,Tabac,`atcd neuro`,Dyslipidémies,Diabète, index) %>%
  filter(Alcool == "Yes" |
         Tabac == "Yes"|
         `atcd neuro` == "3" |
         Dyslipidémies == "Yes"|
         Diabète == "Yes")

cardio_required = cardio[-index, ]

这将为您提供 215 行


推荐阅读