J'ai des données provenant de mes comptes Facebook, Twitter, Instagram, Youtube et LinkedIn que j'aimerais analyser. Je dispose d'un cadre de données similaire au suivant :
df <- data.frame(tw_likes = c(5,4,6,NA,NA,NA,NA,NA,NA),
tw_comments = c(3,5,NA,NA,NA,NA,NA,NA,NA),
fb_likes = c(NA,NA,NA,7,4,8,NA,NA,NA),
fb_comments = c(NA,NA,NA,NA,NA,7,NA,NA,NA),
ig_likes = c(NA,NA,NA,NA,NA,NA,NA,NA,5),
ig_comments = c(NA,NA,NA,NA,NA,NA,43,4,2))
ce que je veux faire, c'est créer une colonne supplémentaire Platform
qui prendra les valeurs "Twitter", "Facebook" ou "Instagram" en fonction de la base de données ci-dessus.
Ma tactique a été la suivante :
for(i in 1:nrow(df){
if(!is.na(df$tw_likes[i]) | !is.na(df$tw_comments[i])){
df$Platform[i] <- "Twitter"
}
else if(!is.na(df$fb_likes[i]) | !is.na(df$fb_comments[i])){
df$Platform[i] <- "Facebook"
}
else if(!is.na(df$ig_likes[i]) | !is.na(df$ig_comments[i])){
df$Platform[i] <- "Instagram"
}
}
Cela fonctionne, mais la lecture devient plus compliquée. En réalité, j'ai plus de colonnes et plus de plateformes de médias sociaux à gérer, alors y a-t-il un moyen de canaliser les données pour que je n'aie pas à écrire df$
autant de fois ?
J'ai également pensé que si je ne pouvais pas retirer le df$
je pourrais combiner les !is.na()
doit être un énoncé par énoncé if ?