Je voudrais réaliser la sortie comme table suivante.
Quelqu'un pourrait-il aider avec les codes ci-dessus? La tâche est principalement de savoir comment Insérez une nouvelle colonne à l'aide de la fonction. Mais je ne suis pas sûr que je dois utiliser mutate_at. L'erreur est venue avec la longueur> 1, je n'ai aucune indices à ce sujet. P>
merci !!! p> puis-je demander comment puis-je résoudre ce problème? / p> p>
3 Réponses :
Que diriez-vous de
data_new <- data %>% mutate( best = case_when( A>B & A>C ~ "Edu", B>A & B>C ~ "Lab", C>A & C>B ~ "Par", TRUE ~ NA_character_ ) )
best <- function(x,y,z){ if ((x>y)&(x>z)){ "Edu" } else if ((y>x)&(y>z)){ "Lab" } else if ((z>x)&(z>y)){ "Par" } } library(dplyr) data %>% rowwise() %>% mutate(best=best(A,B,C)) I don't think you can use mutate_at in your case see ?mutate_at. We need rowwise() as best isn't vectorise function.
Voir ici Comment utiliser si l'instruction SINE dans R.
Il peut être évité à l'aide de PMAP.
best <- function(x,y,z) { case_when( x > y & x > z ~ "Edu", y > x & y > z ~ "Lab", z > x & z > y ~ "Par", TRUE ~ NA_character_) } data %>% bind_cols(best_col = pmap_chr(unname(.),best)) A B C best_col 1 1 2 4 Par 2 2 3 1 Lab 3 3 4 9 Par 4 4 1 0 Edu