0
votes

fonction mutate_at dans r

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.

merci !!! xxx

puis-je demander comment puis-je résoudre ce problème? / p>


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes
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.

1 commentaires

Voir ici Comment utiliser si l'instruction SINE dans R.



0
votes

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


0 commentaires