usar sheet instalar group_by functions como cheat r dplyr

sheet - Cómo usar y/y en dplyr para subconjuntar un data.frame



r dplyr group_by (3)

Me gustaría subordenar un data.frame con una combinación de o / y. Este es mi código usando la función normal de R.

df <- expand.grid(list(A = seq(1, 5), B = seq(1, 5), C = seq(1, 5))) df$value <- seq(1, nrow(df)) df[(df$A == 1 & df$B == 3) | (df$A == 3 & df$B == 2),]

¿Cómo podría convertirlos usando la función de filtro en el paquete dplyr? Gracias por cualquier sugerencia.


solución dplyr :

cargar la biblioteca:

library(dplyr)

filtro con la condición anterior:

df %>% filter(A == 1 & B == 3 | A == 3 & B ==2)


Interesante. Estaba tratando de ver la diferencia en términos del conjunto de datos resultante y no pude obtener una explicación de por qué el viejo "[" operador se comportó de manera diferente:

# Subset for year=2013 sub<-brfss2013 %>% filter(iyear == "2013") dim(sub) #[1] 486088 330 length(which(is.na(sub$iyear))==T) #[1] 0 sub2<-filter(brfss2013, iyear == "2013") dim(sub2) #[1] 486088 330 length(which(is.na(sub2$iyear))==T) #[1] 0 sub3<-brfss2013[brfss2013$iyear=="2013", ] dim(sub3) #[1] 486093 330 length(which(is.na(sub3$iyear))==T) #[1] 5 sub4<-subset(brfss2013, iyear=="2013") dim(sub4) #[1] 486088 330 length(which(is.na(sub4$iyear))==T) #[1] 0


Podrías usar subset() y [ también. Aquí hay algunos métodos diferentes y sus respectivos puntos de referencia en un conjunto de datos más grande.

df <- expand.grid(A = 1:100, B = 1:100, C = 1:100) df$value <- 1:nrow(df) library(dplyr); library(microbenchmark) f1 <- function() subset(df, A == 1 & B == 3 | A == 3 & B == 2) f2 <- function() filter(df, A == 1 & B == 3 | A == 3 & B == 2) f3 <- function() df[with(df, A == 1 & B == 3 | A == 3 & B == 2), ] f4 <- function() df[(df$A == 1 & df$B == 3) | (df$A == 3 & df$B == 2),] microbenchmark(subset = f1(), filter = f2(), with = f3(), "$" = f4()) # Unit: milliseconds # expr min lq mean median uq max neval # subset 47.42671 49.99802 75.95385 92.24430 96.05960 141.2964 100 # filter 36.94019 38.77325 60.22831 42.64112 84.35896 155.0145 100 # with 38.90918 44.36299 71.29214 86.39629 88.89008 134.7670 100 # $ 40.22723 44.08606 71.32186 86.71372 89.59275 133.1132 100