Je voulais créer des variables factices pour chaque valeur unique dans une colonne de R.
Mes données:
O / P souhaité:
Toute aide serait très appréciée.
Merci d'avance.
3 Réponses :
dcast
du package reshape2
.
df <- dcast(id ~sku_name,fun.aggregate="length")
J'ai voté pour mais veuillez corriger: dcast (data = df1, id ~ sku_name, fun.aggregate = length)
.
Vous pouvez créer une colonne factice et utiliser pivot_wider
de tidyr
:
df <- data.frame(id = c(1, 2, 1, 1:4), sku_id = c(234,345,213,233, 456, 678,657), sku_name = c('Google', 'AMZ', 'FK', 'AB', 'JIOMART', 'CLIQ', 'AMART'))
Données p>
library(dplyr) df %>% mutate(n = 1) %>% select(-sku_id) %>% tidyr::pivot_wider(names_from = sku_name, values_from = n, names_prefix = 'sku_', values_fill = list(n = 0)) # id sku_Google sku_AMZ sku_FK sku_AB sku_JIOMART sku_CLIQ sku_AMART # <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #1 1 1 0 1 1 0 0 0 #2 2 0 1 0 0 1 0 0 #3 3 0 0 0 0 0 1 0 #4 4 0 0 0 0 0 0 1
Solution de base R:
df1 <- data.frame(id = c(1,2,1,1,2,3,4), sku_id = c(234, 345, 213, 233, 456, 678, 657), sku_name = c("GOOGLE", "AMZ", "FK", "AB", "JIOMART", "CLIQ", "AMART"))
Données.
xtabs( ~ id + sku_name, df1) # sku_name #id AB AMART AMZ CLIQ FK GOOGLE JIOMART # 1 1 0 0 0 1 1 0 # 2 0 0 1 0 0 0 1 # 3 0 0 0 1 0 0 0 # 4 0 1 0 0 0 0 0
Hey Kiran u, bienvenue, jetez un œil à stackoverflow.com/help/minimal-reproducible-example pour mieux créer des questions :-).
Est-ce que cela répond à votre question? Générer une variable factice