Tout,
Mon ensemble de données
ressemble à ce qui suit. J'essaye de répondre à la question ci-dessous.
Question : ) que d'autres?
Pour répondre à la question ci-dessus, j'ai utilisé la fonction tapply
qui m'a permis de filtrer les données des deux articles. Maintenant, je ne sais pas comment continuer pour obtenir uniquement les données de papier à dessin. Toute aide est appréciée!
Mon code
date year rep store paper paper.type unit.price units.sold total.sale 9991 12/30/2015 2015 Ran Dublin watercolor sheet 0.77 5 3.85 9992 12/30/2015 2015 Ran Dublin drawing pads 10.26 1 10.26 9993 12/30/2015 2015 Arijit Syracuse watercolor pad 12.15 2 24.30 9994 12/30/2015 2015 Thomas Davenport drawing roll 20.99 1 20.99 9995 12/31/2015 2015 Ruisi Dublin watercolor sheet 0.77 7 5.39 9996 12/31/2015 2015 Mohit Davenport drawing roll 20.99 1 20.99 9997 12/31/2015 2015 Aman Portland drawing pads 10.26 1 10.26 9998 12/31/2015 2015 Barakat Portland watercolor block 19.34 1 19.34 9999 12/31/2015 2015 Yunzhu Syracuse drawing journal 24.94 1 24.94 10000 12/31/2015 2015 Aman Portland watercolor block 19.34 1 19.34
Dataset
tapply(df$units.sold,list(df$paper,df$paper.type,df$store),sum)
Remarque: je suis nouveau dans R. Veuillez fournir une explication avec votre code.
3 Réponses :
Vous pouvez commencer par prendre agrégat
de la colonne unit.sold
en fonction de store
et paper.type
< pre> XXX
Ici, nous filtrons les données uniquement pour le type "dessin" de papier
. Nous pouvons comparer le nombre de units.sold
pour chaque store
et paper.type
en fonction de cette sortie.
Merci d'avoir répondu! Comment procéder pour regrouper les magasins et le type de papier en fonction des unités vendues?
@Data_is_Power le code fait de même. Pour chaque magasin
et paper.type
, il additionne
l'unité vendue uniquement pour le type de papier "dessin".
Cherchait la même solution.
utilisez dplyr
de tidyverse
et sa fonction filter
démarre. Vous pouvez enchaîner des fonctions à l'aide de l'opérateur de canal %>%
.
df2 <- df %>% filter(paper == "drawing") %>% group_by(store, paper.type) %>% summarise(units.sold = sum(units.sold)) store paper.type units.sold <chr> <chr> <dbl> 1 Davenport roll 2 2 Dublin pads 1 3 Portland pads 1 4 Syracuse journal 1
Merci! trouvé dplyr comme un autre moyen de filtrer mon jeu de données!
Nous pouvons utiliser data.table
. Convertissez le 'data.frame' en 'data.table' avec setDT
, groupé par 'store' 'paper.type', spécifiez l'expression i
( paper == 'drawing'
) pour sous-ensembles les lignes et résumer les 'units.sold' en obtenant la somme
de celles-ci
df <- structure(list(date = c("12/30/2015", "12/30/2015", "12/30/2015", "12/30/2015", "12/31/2015", "12/31/2015", "12/31/2015", "12/31/2015", "12/31/2015", "12/31/2015"), year = c(2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L), rep = c("Ran", "Ran", "Arijit", "Thomas", "Ruisi", "Mohit", "Aman", "Barakat", "Yunzhu", "Aman"), store = c("Dublin", "Dublin", "Syracuse", "Davenport", "Dublin", "Davenport", "Portland", "Portland", "Syracuse", "Portland" ), paper = c("watercolor", "drawing", "watercolor", "drawing", "watercolor", "drawing", "drawing", "watercolor", "drawing", "watercolor"), paper.type = c("sheet", "pads", "pad", "roll", "sheet", "roll", "pads", "block", "journal", "block"), unit.price = c(0.77, 10.26, 12.15, 20.99, 0.77, 20.99, 10.26, 19.34, 24.94, 19.34), units.sold = c(5L, 1L, 2L, 1L, 7L, 1L, 1L, 1L, 1L, 1L), total.sale = c(3.85, 10.26, 24.3, 20.99, 5.39, 20.99, 10.26, 19.34, 24.94, 19.34 )), class = "data.frame", row.names = c("9991", "9992", "9993", "9994", "9995", "9996", "9997", "9998", "9999", "10000"))
library(data.table) setDT(df)[paper == "drawing", .(units.sold = sum(units.sold)), .(store, paper.type)] # store paper.type units.sold #1: Dublin pads 1 #2: Davenport roll 2 #3: Portland pads 1 #4: Syracuse journal 1