0
votes

dplyr utate case quand

J'ai les données suivantes: xxx

Je voudrais utiliser muté pour créer une nouvelle colonne qui est la somme de var1 et var 2 divisé par 2 .

C'est le code que je dois essayer de le faire, mais cela ne fait pas tout à fait ce que je veux. xxx

je veux juste un total Colonne, également la valeur au total pour la première rangée doit être de 49 ans, donc je ne suis pas sûr de l'endroit où le 5 vient de.

Merci


0 commentaires

4 Réponses :


3
votes

Vous pouvez vérifier la condition ensemble ensemble dans cas_quive code> sinon retourner 0 où la condition ne correspond pas.

d %>% 
  mutate(Total = ifelse((Region == "R1" & Area == "R123") | 
         (Region == "R2" & Area == "R234"), (var1 + var2) / 2,  0))  


0 commentaires

2
votes

supposer que vous voulez juste appliquer l'arithmétique à toutes les lignes ...

Si vous souhaitez conserver toutes les colonnes: P>

default = 0       # define the default value for other cases

d %>% 
  transmute(Total=ifelse(Region=="R1" | Region=="R2", (var1+var2)/2, default)) -> new_d


1 commentaires

Je ne savais pas exactement si Mrmoleje voulait maintenir cette condition



1
votes

sans utiliser ifelse / case_quive , nous pouvons multiplier directement le vecteur logique avec le rowmetans de 'var1', 'var2' xxx


ou dans base r xxx


0 commentaires

0
votes

D'autres ont déjà répondu à la question de savoir comment faire ce que vous voudriez, mais de répondre à la question de savoir où les 5 viennent de: La somme est une somme de colonne, pas une somme de ligne, et lorsque vous combinez les variables à l'aide du symbole & symbole, vous obtenez des valeurs de true ou false (dans ce cas Vrai ). Lorsque la somme de la colonne est calculée, il est 10 car true a une valeur numérique de 1. Le 10 est ensuite divisé par 2 pour obtenir le 5.


0 commentaires