Chers membres, aidez-moi à trouver la solution au problème ci-dessous.
df.data
Team_1 Team_2 Cond New_Column RKS MGR 1 RKS Vs MGR MGR RKS 2 RKS Vs MGR VSK LSR 1 VSK Vs LSR LSR VSK 2 VSK Vs LSR
Vous souhaitez créer un nouveau cadre de données qui si Cond = 1 New_Column = Team_1 Vs Team_2 else Team_2 Vs Team_1
Résultat attendu
df.Newdata
Team_1 Team_2 Cond RKS MGR 1 MGR RKS 2 VSK LSR 1 LSR VSK 2
3 Réponses :
Vous pouvez utiliser ifelse ici, avec la colonne Cond déterminant quelle équipe vient en premier dans la comparaison.
df$New_Column <- ifelse(df$Cond == 1,
paste0(df$Team_1, " Vs ", df$Team_2),
paste0(df$Team_2, " Vs ", df$Team_1))
df
Team_1 Team_2 Cond New_Column
1 RKS MGR 1 RKS Vs MGR
2 MGR RKS 2 RKS Vs MGR
3 VSK LSR 1 VSK Vs LSR
4 LSR VSK 2 VSK Vs LSR
Vous pouvez également utiliser sqldf pour le bloc de données df:
df <- sqldf("SELECT Team_1, Team_2, Cond, CASE
WHEN Cond = 1 THEN Team_1 || ' Vs ' || Team_2
WHEN Cond = 2 THEN Team_2 || ' Vs ' || Team_1
END New_Column
FROM df ")
Comme la colonne "Cond" est l'index de la colonne, il peut également être utilisé de manière différente d'extraire la valeur d'élément avec légère changement de temps écoulé sur un jeu de données 1E7 p> ligne / colonne code> indexation Benchmarks h3>
données h3>
C'est utile si vous montrez ce que vous avez essayé jusqu'à présent et ce qui n'a pas fonctionné. Il y a déjà beaucoup de questions similaires, mais plus de détails aideraient à savoir comment cela est différent des autres questions.