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
Tabla de contenidos
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
- table (): Número de vistas por nivel. Tenga en cuenta que solo se acepta una variable de nivel de factor
- table (step_1_df $ GoingTo): Cuente el número de viajes hasta el destino final.
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:
- importar
- fusionando
- elegir
- poner en pantalla
- y así
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:
- Paso 1: Importar datos: importar los datos del GPS
- Paso 2: seleccione los detalles: seleccione GoingTo y DayOfWeek
- Paso 3: Filtrar datos: volver a casa y solo el miércoles
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.
Verbo | Propósito | Código | Explicación |
---|---|---|---|
atisbos | comprobar 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 |