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>