0
votes

Création d'une nouvelle colonne en combinant les colonnes existantes de manière conditionnelle dans R

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

r

1 commentaires

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.


3 Réponses :


0
votes

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


0 commentaires

0
votes

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 ")


0 commentaires

0
votes

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 ligne / colonne indexation xxx

Benchmarks

légère changement de temps écoulé sur un jeu de données 1E7 xxx

données xxx


0 commentaires