Problema
Queremos filtrar un data frame basándonos en múltiples condiciones usando el operador "O". En nuestro ejemplo filtraremos aquellas filas del data frame donde la v1 sea menor que 0.5 o donde v2 sea igual a g.
Data frame original
v1 v2
1 0.26550866 a
2 0.37212390 b
3 0.57285336 c
4 0.90820779 d
5 0.20168193 e
6 0.89838968 f
7 0.94467527 g
8 0.66079779 h
9 0.62911404 i
10 0.06178627 j
Resultado esperado
v1 v2
1 0.26550866 a
2 0.37212390 b
3 0.20168193 e
4 0.94467527 g
5 0.06178627 j
set.seed(1)
df <- data.frame(v1 = runif(10), v2 = letters[1:10])
Solución
Hay múltiples opciones:
- Funciones del paquete base
subset(df , v1 < 0.5 | v2 == "g")
df[which(df$v1 < 0.5 | df$v2 == "g"), ]
df[df[1] < 0.5 | df[2] == "g", ]
df[df[[1]] < 0.5 | df[[2]] == "g", ]
df[df["v1"] < 0.5 | df["v2"] == "g", ]
df$name is equivalent to df[["name", exact = FALSE]]
library(dplyr)
filter(df, v1 < 0.5 | v2 == "g")
library(sqldf)
sqldf('SELECT *
FROM df
WHERE v1 < 0.5 OR v2 = "g")
Referencias
No hay comentarios:
Publicar un comentario