Saltar al contenido

R Seleccionar (), Filtro (), Establecer (), Canalización con ejemplo

En este tutorial, aprenderá

La biblioteca contiene valiosos verbos llamados dplyr para navegar dentro del conjunto de datos. A través de este tutorial, utilizará el conjunto de datos de Tiempos de viaje. El conjunto de datos recopila información sobre las direcciones de viaje del conductor entre su hogar y su lugar de trabajo. El conjunto de datos contiene catorce variables, que incluyen:

  • DayOfWeek: identifica el día de la semana en que el conductor usa su automóvil
  • Duración: duración total del viaje
  • MaxSpeed: velocidad máxima de conducción
  • TotalTime: la duración en minutos del viaje

El conjunto de datos contiene alrededor de 200 observaciones en el conjunto de datos y los viajes se realizaron de lunes a viernes.

Primero que nada, necesitas:

  • cargando el conjunto de datos
  • comprobar la estructura de los datos.

Una característica útil con dplyr es la función de flash (). Esta es una mejora en str (). Podemos usar un vistazo () para ver la estructura del conjunto de datos y decidir la manipulación requerida.


library(dplyr) 
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"
df <- read.csv(PATH)
glimpse(df)

Producción:


## Observations: 205
## Variables: 14
## $ X              <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
## $ Date           <fctr> 1/6/2012, 1/6/2012, 1/4/2012, 1/4/2012, 1/3/20...
## $ StartTime      <fctr> 16:37, 08:20, 16:17, 07:53, 18:57, 07:57, 17:3...
## $ DayOfWeek      <fctr> Friday, Friday, Wednesday, Wednesday, Tuesday,...
## $ GoingTo        <fctr> Home, GSK, Home, GSK, Home, GSK, Home, GSK, GS...
## $ Distance       <dbl> 51.29, 51.63, 51.27, 49.17, 51.15, 51.80, 51.37...
## $ MaxSpeed       <dbl> 127.4, 130.3, 127.4, 132.3, 136.2, 135.8, 123.2...
## $ AvgSpeed       <dbl> 78.3, 81.8, 82.0, 74.2, 83.4, 84.5, 82.9, 77.5,...
## $ AvgMovingSpeed <dbl> 84.8, 88.9, 85.8, 82.9, 88.1, 88.8, 87.3, 85.9,...
## $ FuelEconomy    <fctr> , , , , , , -, -, 8.89, 8.89, 8.89, 8.89, 8.89...
## $ TotalTime      <dbl> 39.3, 37.9, 37.5, 39.8, 36.8, 36.8, 37.2, 37.9,...
## $ MovingTime     <dbl> 36.3, 34.9, 35.9, 35.6, 34.8, 35.0, 35.3, 34.3,...
## $ Take407All     <fctr> No, No, No, No, No, No, No, No, No, No, No, No...
## $ Comments       <fctr> , , , , , , , , , , , , , , , Put snow tires o...	

Esto indica claramente que la variable Comentario requiere más diagnósticos. Las observaciones iniciales de la variable Vistas son valores perdidos.

sum(df$Comments =="")

Explicación del Código

  • sum (df $ Comentarios == “”): Suma de comentarios igual a “” columna de comentarios de df

Producción:

## [1] 181	

Seleccione ()

Comenzaremos con el verbo seleccionado (). No necesariamente tenemos todas las variables, y es una buena práctica seleccionar las variables que considere relevantes.

Nos faltan 181 observaciones, casi el 90 por ciento del conjunto de datos. Si decide excluirlos, no podrá realizar el análisis.

La otra posibilidad es omitir la variable Comentario con el verbo seleccionado ().

Podemos seleccionar variables de diferentes formas para seleccionar (). Tenga en cuenta que el primer argumento es el conjunto de datos.


- `select(df, A, B ,C)`: Select the variables A, B and C from df dataset.
- `select(df, A:C)`: Select all variables from A to C from df dataset.
- `select(df, -C)`: Exclude C from the dataset from df dataset.	

Puede utilizar la tercera forma de excluir la variable Vistas.


step_1_df <- select(df, -Comments)
dim(df)

Producción:

## [1] 205  14
dim(step_1_df)

Producción:

## [1] 205  13	

El conjunto de datos original contiene 14 elementos y step_1_df tiene 13.

Filtro ()

El verbo filter () ayuda a mantener las observaciones de acuerdo con los criterios. El filter () funciona igual que select (), primero pasa el marco de datos y luego una condición separada por comas:


filter(df, condition)
arguments:
- df: dataset used to filter the data
- condition:  Condition used to filter the data	

Solo criterios

Primero, puede contar el número de vistas dentro de cada nivel de variable de factor.


table(step_1_df$GoingTo)

Explicación del Código

Producción:


## 
##  GSK Home 
##  105  100	

La tabla funcional () indica que 105 viajes van a GSK y 100 a Inicio.

Podemos filtrar los datos para restaurar un conjunto de datos con 105 observaciones y otro con 100 observaciones.


# Select observations
if GoingTo == Home
select_home <- filter(df, GoingTo == "Home")
dim(select_home)

Producción:

## [1] 100  14

# Select observations
if GoingTo == Work
select_work <- filter(df, GoingTo == "GSK")
dim(select_work)

Producción:

## [1] 105  14	

Numerosos criterios

Podemos filtrar un conjunto de datos con más de un criterio. Por ejemplo, puede llegar a las observaciones donde está el destino de Inicio y donde ocurrió el miércoles.


select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")
dim(select_home_wed)

Producción:

## [1] 23 14	

23 observaciones coincidieron con este criterio.

Tubería

La creación de un conjunto de datos requiere muchas operaciones, como:

Un operador práctico viene en la biblioteca dplyr,%>%, llamado el tubería. La función de canalización hace que la manipulación sea limpia, rápida y sin errores.

Este operador es un código que realiza pasos sin guardar pasos intermedios en el disco duro. Si vuelve a nuestro ejemplo anterior, puede seleccionar las variables de interés y filtrarlas. Tenemos tres pasos:

Podemos utilizar la forma más difícil de hacerlo:


# Step 1
step_1 <- read.csv(PATH)

# Step 2 
step_2 <- select(step_1, GoingTo, DayOfWeek)

# Step 3 
step_3 <- filter(step_2, GoingTo == "Home", DayOfWeek == "Wednesday")

head(step_3)

Producción:


##   GoingTo DayOfWeek
## 1    Home Wednesday
## 2    Home Wednesday
## 3    Home Wednesday
## 4    Home Wednesday
## 5    Home Wednesday
## 6    Home Wednesday	

Ésta no es una forma conveniente de realizar muchas operaciones, especialmente cuando hay muchos pasos. El entorno completa muchas cosas almacenadas.

En su lugar, usemos el operador de canalización%>%. Solo necesitamos definir el marco de datos utilizado al principio y todo el proceso fluirá a partir de él.

La proporción básica de la tubería.


New_df <- df %>%
step 1 %>%
step 2 %>%
...
arguments
- New_df: Name of the new data frame 
- df: Data frame used to compute the step
- step: Instruction for each step
- Note: The last instruction does not need the pipe operator `%`, you don't have instructions to pipe anymore
Note: Create a new variable is optional. If not included, the output will be displayed in the console.

Puede crear su primera tubería siguiendo los pasos mencionados anteriormente.


# Create the data frame filter_home_wed.It will be the object return at the end of the pipeline
filter_home_wed <- 

#Step 1
read.csv(PATH) % > % 

#Step 2
select(GoingTo, DayOfWeek) % > % 

#Step 3
filter(GoingTo == "Home",DayOfWeek == "Wednesday")
identical(step_3, filter_home_wed)

Producción:

## [1] TRUE	

Estamos listos para crear un impresionante conjunto de datos con el operador de la tubería.

arreglo ()

Sa tutorial anterior, aprenderá a ordenar los valores por dicha función (). La biblioteca dplyr tiene su función de clasificación. Funciona como un encanto para la tubería. El verbo set () puede reordenar una o más filas, ya sea ascendente (predeterminado) o descendente.


- `arrange(A)`: Ascending sort of variable A
- `arrange(A, B)`: Ascending sort of variable A and B
- `arrange(desc(A), B)`: Descending sort of variable A and ascending sort of B		

Podemos ordenar la distancia por destino.


# Sort by destination and distance
step_2_df <-step_1_df %>%
	arrange(GoingTo, Distance)
head<step_2_df)

Producción:


##     X       Date StartTime DayOfWeek GoingTo Distance MaxSpeed AvgSpeed
## 1 193  7/25/2011     08:06    Monday     GSK    48.32    121.2     63.4
## 2 196  7/21/2011     07:59  Thursday     GSK    48.35    129.3     81.5
## 3 198  7/20/2011     08:24 Wednesday     GSK    48.50    125.8     75.7
## 4 189  7/27/2011     08:15 Wednesday     GSK    48.82    124.5     70.4
## 5  95 10/11/2011     08:25   Tuesday     GSK    48.94    130.8     85.7
## 6 171  8/10/2011     08:13 Wednesday     GSK    48.98    124.8     72.8
##   AvgMovingSpeed FuelEconomy TotalTime MovingTime Take407All
## 1           78.4        8.45      45.7       37.0         No
## 2           89.0        8.28      35.6       32.6        Yes
## 3           87.3        7.89      38.5       33.3        Yes
## 4           77.8        8.45      41.6       37.6         No
## 5           93.2        7.81      34.3       31.5        Yes
## 6           78.8        8.54      40.4       37.3         No

Resumen

En la siguiente tabla, resume todas las operaciones que aprendió durante el tutorial.

VerboPropósitoCódigoExplicación
atisboscomprobar estructura df
glimpse(df)
Equivalente a str ()
Seleccione ()Seleccionar / excluir variables
select(df, A, B ,C)
Seleccione las variables A, B y C.
select(df, A:C)
Seleccione todas las variables de A a C.
select(df, -C)
Excluir C.
filtro ()Filtrar el df según una o varias condiciones
filter(df, condition1)
Una condición
filter(df, condition1
ondition2)
arreglo ()Ordene el conjunto de datos con una o muchas variables
arrange(A)
Variable ascendente A.
arrange(A, B)
Variable ascendente tipo A y B.
arrange(desc(A), B)
Variable descendente tipo A y ascendente tipo B.
%>%Crea una canalización entre cada paso
step 1 %>% step 2 %>% step 3

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *