找到相反的条件(使用 R tidyverse)以便将数据集拆分为 2
Finding the opposite of condition (using R tidyverse) in order to split dataset in 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" ))
如果有人可以帮忙?非常感谢
不使用括号,您可以将 ==
和 |
符号替换为 !=
和 &
:
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" )
编辑:您可以使用 anti-join
函数:
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")
others <- dplyr::anti_join(donnees, cardio)
@MonJeanJean 建议的 anti_join
方法应该有效。但如果它没有,这里有一个有点不同的方法,想法是创建一个索引列并排除你不需要的(让人想起 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 行
我正在尝试将我的数据集(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" ))
如果有人可以帮忙?非常感谢
不使用括号,您可以将 ==
和 |
符号替换为 !=
和 &
:
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" )
编辑:您可以使用 anti-join
函数:
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")
others <- dplyr::anti_join(donnees, cardio)
@MonJeanJean 建议的 anti_join
方法应该有效。但如果它没有,这里有一个有点不同的方法,想法是创建一个索引列并排除你不需要的(让人想起 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 行