es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar el paquete dplyr para lograr esto. Primero, puedes agrupar los datos por ArticleNr y luego usar la función count para contar el número de fechas en que aparece cada ArticleNr. Finalmente, puedes usar la función arrange para ordenar los datos en orden descendente.

    library(dplyr)
    
    df %>% 
      group_by(ArticleNr) %>% 
      count(created) %>% 
      arrange(desc(n))
    

    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ón head para obtener los primeros n-rankings. Por ejemplo, para obtener los 10 primeros:

    df %>% 
      group_by(ArticleNr) %>% 
      count(created) %>% 
      arrange(desc(n)) %>% 
      head(10)
    

Comments are closed.