Una variable categórica V1 en un marco de datos D1 puede tener valores representados por las letras de la A a la Z. Quiero crear un subconjunto D2, que excluye algunos valores, por ejemplo, B, N y T. Básicamente, quiero un comando que sea lo contrario a %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
!(x %in% y)
) La vida puede ser fácil a veces ...Respuestas:
Puedes usar el
!
operador para hacer básicamente cualquier VERDADERO FALSO y cada FALSO VERDADERO. entonces:EDITAR: También puede hacer un operador usted mismo:
fuente
?"%in%"
) donde se llama al nuevo operador%w/o%
.?Negate
por ejemplo"%ni%" <- Negate("%in%")
subset(df, variable %ni% c("A", "B"))
, pero no cuando lo usé directamente, por ejemplosubset(df, variable Negate("%in%") c("A", "B"))
%
. Para crear un operador, debe asignar una función con dos operandos a un nombre que comience y termine con%
.Qué tal si:
fuente
Si nos fijamos en el código de
%in%
entonces deberías poder escribir tu versión de opuesto. yo suelo
Otra forma es:
fuente
Aquí hay una versión que usa
filter
indplyr
que aplica la misma técnica que la respuesta aceptada al negar la lógica con!fuente
Usar
negate
frompurrr
también hace el truco de forma rápida y ordenada:Entonces el uso es, por ejemplo,
fuente
Negate
que hace lo mismo. La única diferencia es que el ronroneo llamaas_mapper
a lo que pasa, mientras que lasNegate
llamadasmatch.fun
. rdocumentation.org/packages/purrr/versions/0.2.5/topics/… stat.ethz.ch/R-manual/R-devel/library/base/html/match.fun.htmlpurrr::compose()
Es otra forma rápida de definir esto para su uso posterior, como en:fuente
Otra solución podría estar usando
setdiff
D2
es tu subconjunto deseado.fuente
Hmisc tiene
%nin%
función, que debería hacer esto.https://www.rdocumentation.org/packages/Hmisc/versions/4.4-0/topics/%25nin%25
fuente
Creo que el uso más claro es solo
fuente
fuente
Para obtener más información, puede consultar: https://cran.r-project.org/web/packages/TSDT/TSDT.pdf
fuente
La ayuda para% en%,
help("%in%")
incluye, en la sección de Ejemplos, esta definición de no en,"%w/o%" <- function(x, y) x[!x %in% y] #-- x without y
Vamos a intentarlo:
Alternativamente
fuente