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%.?Negatepor 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
filterindplyrque aplica la misma técnica que la respuesta aceptada al negar la lógica con!fuente
Usar
negatefrompurrrtambién hace el truco de forma rápida y ordenada:Entonces el uso es, por ejemplo,
fuente
Negateque hace lo mismo. La única diferencia es que el ronroneo llamaas_mappera lo que pasa, mientras que lasNegatellamadasmatch.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
setdiffD2es 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 yVamos a intentarlo:
Alternativamente
fuente