J'ai un jeu de données qui ressemble à ce il contient des informations sur 4 sites clients et la colonne finale pour sites Le Dataframe résultant ressemblerait à ceci - p> i utilisé toute aide sur ceci serait apprécié. p> p> email code> détermine si le client doit être envoyé par courrier électronique Promotion ou non. p>
B code> et
d code>, il y a une anomalie que je voudrais corriger. Leur
e-mail code> contient les deux
oui code> et
non code>. J'aimerais écrire un code tel que dans le cas où il y a un
no code> et
oui code> dans la colonne code> e-mail code> pour le même site client, La colonne code> email code> devient toujours un
oui code>. Éliminant ainsi le duplicata. P>
dplyr code> dans ma tentative, mais Cela ne me donne pas ce que je cherche p>
5 Réponses :
Vous pouvez le faire, mais vous devez utiliser cas_quive () code> interne muté, puis
tout (e-mail == "oui") comme condition. Enfin, code> distinct () `supprime des doublons.
library(dplyr)
dframe %>%
group_by(SiteCode,SiteName,Revenue,StrategicSite) %>%
mutate(Email = case_when(any(Email == "Yes") ~ "Yes",
TRUE ~ "No")) %>%
distinct()
Pourquoi ne pas utiliser résumée () code>? Il peut vous enregistrer l'utilisation de
distinct () code>.
Utiliser résumez code> au lieu de
muté code>:
Voici une option de base r en utilisant qui donne p> unique code> +
AVE code>
A Solution code> r avec
agrégat () code>. C'est un avantage, c'est que vous pouvez utiliser
"." Code> dans la formule pour représenter toutes les colonnes sauf
e-mail code>.
aggregate(Email ~ ., dframe, function(x) ifelse("Yes" %in% x, "Yes", "No"))
# SiteCode SiteName Revenue StrategicSite Email
# 1 2 B 200 No Yes
# 2 3 C 550 No No
# 3 1 A 100 Yes Yes
# 4 4 D 700 Yes Yes
Voici une autre option Cela fournira exactement ce que vous voulez. p> p>