0
votes

Plusieurs colonnes et je souhaite réorganiser ces colonnes en fonction d'une autre colonne de R ou Excel

 Entrez la description de l'image ici

J'ai des données qui ressemblent à ceci. Pour r_fighter , je veux r_fighter avoir les combattants qui sont définis dans la colonne gagnante.

Par exemple, cela n'est pas satisfait de la ligne 5, où Petr Yan a remporté le combat mais il est dans B_fighter . En outre, j'aurais besoin r_kd et b_kd à échanger pour la ligne 5 et r_sig_str et b_sig_str . J'ai beaucoup plus de colonnes avec r _ et b _ les attributs de colonne et en auriez besoin de toutes les transmises.

J'ai besoin de toutes les lignes avec le gagnant sur b_fighter commuté.

ci-joint est un échantillon de mes données: xxx

Merci beaucoup :)


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser le package dplyr code> dans r, qui a de nombreuses fonctions pour remodeler les données.

Dans votre cas, vous pouvez utiliser quelque chose comme: P>

library(dplyr)
mydata %>%
 mutate(R_fighter_new = winner,
        B_fighter_new = if_else(R_fighter == winner, B_fighter, R_fighter),
        R_KD_new = if_else(R_fighter == winner, R_KD, B_KD),
        B_KD_new = if_else(R_fighter == winner, B_KD, R_KD)) %>%
 select(R_fighter = R_fighter_new, B_fighter = B_fighter_new, R_KD = R_KD_new, B_KD = B_KD_new, winner)


0 commentaires

0
votes

Nous pouvons utiliser cas_quive dans dplyr xxx


0 commentaires

0
votes

Vous pouvez essayer quelque chose comme celui-ci avec plusieurs colonnes à échanger. Tout d'abord, ajoutez une colonne de numéro de correspondance pour chaque ligne. Ensuite, pivot_longer code> Vous avez donc une seule colonne pour R vs. B. Cette colonne serait échangée en fonction des valeurs de combattant et gagnantes. Ensuite, pour remettre au format élargi d'origine, vous pouvez utiliser pivot_wider code>. Notez que pivot_wider code> mettra la "valeur" devant la sortie car il contient plusieurs valeurs (R et B ont été déplacés vers la fin).

library(tidyverse)

df %>%
  mutate(match_no = row_number()) %>%
  pivot_longer(cols = R_fighter:B_SIG_STR., names_to = c("R_vs_B", ".value"), names_pattern = "(R|B)_(\\w+)") %>%
  mutate(R_vs_B = case_when(R_vs_B == "B" & fighter == winner ~ "R",
                            R_vs_B == "R" & fighter != winner ~ "B",
                            TRUE ~ R_vs_B)) %>%
  pivot_wider(id_cols = c(match_no, winner, win_by, weight), names_from = R_vs_B, values_from = fighter:SIG_STR)


0 commentaires