Obtener los elementos más repetidos en una columna y su valor asociado en otra columna.
Mi conjunto de datos original (cyclistic_data) tiene 3 columnas: nombre de la estación
, station_lat
y station_lng
. Esta es una vista previa de mi conjunto de datos.
Vista previa del conjunto de datos
station_coordinates <-
data.frame(
station = c(Dearborn St, Franklin St, Lake Shore Dr, Dearborn St,
Dearborn St, Franklin St),
station_lat = c(-87.6291273333333, -87.6353428333333,
41.8809828333333, -87.6291273333333,
-87.6291273333333, -87.6353428333333),
station_lng = c(41.8944341666667, 41.900675, 41.8720545,
41.8944341666667, 41.8944341666667, 41.900675)
)
Intenté usar el siguiente código para obtener los 100 nombres de estación más comunes:
sort(table(cyclistic_data$start_station),decreasing=TRUE)[1:100]
Al usar este código, identifiqué las 100 estaciones principales pero no pude extraer los valores correspondientes de latitud y longitud de los datos originales. Quiero recuperar los nombres de las 100 estaciones más comunes junto con sus valores de latitud y longitud del conjunto de datos original.
davy.ai
Una opción para recuperar los 100 nombres de estaciones más repetidos junto con sus latitudes y longitudes sería utilizar el paquete
dplyr
. Primero podemos agrupar los datos pornombre de estación
, contar el número de ocurrencias de cada estación, ordenar los datos en orden descendente de frecuencia, seleccionar las 100 estaciones principales y luego unir estos datos con el conjunto de datos original según la columnanombre de estación
. Aquí hay un ejemplo de código para lograr esto:“`{r}
library(dplyr)
agrupar y contar las estaciones, ordenar en orden descendente y seleccionar las primeras 100
top_estaciones <- datos_ciclismo %>%
group_by(
nombre de estación
) %>%summarize(n = n()) %>%
arrange(desc(n)) %>%
top_n(100)
unir con el conjunto de datos original para recuperar la latitud y longitud
coordenadas_estaciones <- datos_ciclismo %>%
filter(
nombre de estación
%in% top_estaciones$nombre de estación
) %>%select(
nombre de estación
, latitud_estacion, longitud_estacion) %>%distinct()
“`
En el código anterior, primero creamos un nuevo marco de datos
top_estaciones
que contiene los 100 nombres de estaciones más repetidos y su frecuencia. Lo logramos agrupando los datos pornombre de estación
, contando el número de ocurrencias (summarize(n = n())
), ordenando el marco de datos en orden descendente de frecuencia (arrange(desc(n))
) y seleccionando las 100 estaciones principales usandotop_n (100)
.Luego, usamos este marco de datos para filtrar el conjunto de datos original y recuperar los valores de latitud y longitud correspondientes para cada una de las 100 estaciones principales. Lo logramos filtrando el conjunto de datos para incluir solo los nombres de estación que están en
top_estaciones
(filter(
nombre de estación%in% top_estaciones$
nombre de estación)
), seleccionando solo las columnas que necesitamos (select(
nombre de estación, latitud_estacion, longitud_estacion)
) y eliminando cualquier duplicado (distinct()
).Finalmente, el marco de datos resultante
coordenadas_estaciones
contiene los 100 nombres de estaciones más repetidos junto con sus valores de latitud y longitud.