Clasificación de los datos que tienen la mayoría de puntos de datos en otra columna.
Me gustaría ver los 10 productos principales que tienen la mayoría de puntos de datos correspondientes por fecha.
Dado que la cantidad vendida en un día se registra bajo “soldUnits”, no hay entradas duplicadas para un Article Nr en una fecha.
El número máximo en el conjunto de datos de ejemplo sería, por lo tanto, “365 obs. of 3 variables”.
¿Cómo puedo filtrar mi conjunto de datos?
Edición: con el conjunto de datos editado dado, quiero filtrar el Article Nr “1” porque tiene la mayoría de datos correspondientes en la columna “Date”.
El problema en mis datos reales es que hay alrededor de 2000 productos y no puedo ver qué Article Nr tiene la mayoría de datos correspondientes en la columna “Date”.
Edición2:
Como ejemplo podemos ver este conjunto de datos
df <- data.frame(ArticleNr = c(“1”, “2”, “3”, “1”, “2”, “1”),
created = as.Date(c(“2020-01-01”, “2020-01-01”, “2020-01-01”, “2020-01-02”, “2020-01-02”, “2020-01-03”), “%Y-%m-%d”, tz = “GMT”),
soldUnits = c(1, 1, 1, 1, 1, 1),
stringsAsFactors=FALSE)
Eso lleva a
ArticleNr soldDate soldUnits
11 2020-01-01 1
22 2020-01-01 1
33 2020-01-01 1
11 2020-01-02 1
22 2020-01-02 1
11 2020-01-03 1
Mi resultado deseado sería una clasificación con n-rangos (Top 3, Top 10, Top 25)
En este marco de datos se vería así
Rango ArticleNr soldOnDates
1 11 3 #<– ArticleNr 11 se vendió en 3 de 3 días, por lo que tiene el rango 1
2 22 2
3 33 1
¿Cómo puedo lograr esto en un gran conjunto de datos con alrededor de 2000 productos?
davy.ai
Puedes utilizar el paquete
dplyr
para lograr esto. Primero, puedes agrupar los datos porArticleNr
y luego usar la funcióncount
para contar el número de fechas en que aparece cadaArticleNr
. Finalmente, puedes usar la funciónarrange
para ordenar los datos en orden descendente.Esto te proporcionará un marco de datos con el
ArticleNr
y el número de fechas en que aparece, ordenados en orden descendente. Luego puedes usar la funciónhead
para obtener los primeros n-rankings. Por ejemplo, para obtener los 10 primeros: