# Por rango de columnasventas |>select(id_venta:id_tienda)# Excluir columnasventas |>select(-descuento_porcentaje, -descuento_aplicado)# Por patrón de nombreventas |>select(starts_with("id_"))ventas |>select(ends_with("_porcentaje"))ventas |>select(contains("descuento"))# Por tipo de datoventas |>select(where(is.numeric))ventas |>select(where(is.character))
pull(): extrae una única columna, como vector (no como tabla)
Extraer filas pero NO por condición: por posición (slice(), slice_head()), aleatoriamente (slice_sample()), por valor (slice_max()), etc.
ventas |>slice_max(total, n =5) # Top 5 ventasventas |>slice_sample(n =100) # sub-muestra aleatoria
distinct(): extrae sólo las filas únicas (de una o varias variables)
ventas |>distinct(id_producto)ventas |>distinct(id_producto, .keep_all =TRUE) # conserva el resto de columnas
Filas con valores ausentes (NA)
drop_na() y replace_na(): elimina/reemplaza filas con valores ausentes
ventas_completas <- ventas |>drop_na() # NA en cualquier variableventas_con_empleado <- ventas |># solo si falta el empleadodrop_na(id_empleado) # (venta online)
Eliminar NA, PERO:
en alguna variable: na.rm = TRUE o filter(!is.na(x)) o drop_na(x)
en todo el conjunto de datos: drop_na()
Reemplazar por un valor, PERO ¿cuál?
NA por no presentarse a un examen es cero
NA por no contestar a la pregunta de renta, ¿es cero?
mutate(), summarize(), filter() y slice() aceptan .by =, que agrupa solo para esa operación. Hace lo mismo que group_by() y evita de raíz el problema de quedarse agrupado.
El resultado sale siempre desagrupado, así que desaparece el fallo de “se me quedó agrupado” y no hace falta ungroup() ni .groups = "drop".
No reordena las filas. group_by() ordena por la clave; .by = deja el orden original.
Hace menos copias, lo que se nota con millones de filas.
Con varias claves hay que envolverlas: .by = c(id_tienda, mes).
En el curso se enseña group_by(), porque es lo que vais a encontrar en la documentación, en los ejemplos de internet y en el código de otros. .by = es el atajo una vez entendido lo que hace la agrupación.
Ancho o largo: qué tareas se complican
Con formato ancho, algunas tareas son imposibles
Según nuestros objetivos, podemos preferir formato ancho o largo
Problemas prácticos del formato ancho para analizar datos:
Algunas tareas son imposibles. P.e., ¿qué trimestres superan 160 en ventas?
ventas_largo |>filter(ventas >160)
Código repetitivo y propenso a errores. P.e., calcular el crecimiento