En fonction d'une valeur dans une colonne, je veux une valeur dans une nouvelle colonne. Lors de la visite 1, je veux 7 dans la colonne "nouveau", lors de la visite 2 je veux 8 dans la colonne "nouveau" et lors de la visite 3 je veux 9 dans la colonne "nouveau".
df %>%mutate(new=(visit==2))
id visit trt new
1 1001 1 A FALSE
2 1001 2 B TRUE
3 1001 3 C FALSE
4 1002 1 A FALSE
5 1002 2 B TRUE
6 1002 3 C FALSE
7 1003 1 A FALSE
8 1003 2 B TRUE
9 1003 3 C FALSE
I a obtenu son loin mais maintenant je ne sais pas comment continuer. Quelqu'un at-il des conseils à donner? Merci!
id <- rep(1001:1003, each=3)
visit <- rep(1:3,3)
trt <- rep(c("A","B","C"),3)
df <- data.frame(id,visit,trt)
id visit trt
1 1001 1 A
2 1001 2 B
3 1001 3 C
4 1002 1 A
5 1002 2 B
6 1002 3 C
7 1003 1 A
8 1003 2 B
9 1003 3 C
I want it to look like:
id visit trt new
1 1001 1 A 7
2 1001 2 B 8
3 1001 3 C 9
4 1002 1 A 7
5 1002 2 B 8
6 1002 3 C 9
7 1003 1 A 7
8 1003 2 B 8
9 1003 3 C 9
3 Réponses :
Si vos nombres sont 1, 2, 3 et sont dans l'ordre comme indiqué, vous pouvez simplement ajouter 6 à votre colonne visite
library(dplyr)
df %>%
mutate(new =case_when(visit == 1 ~ 7,
visit == 2 ~ 8,
visit == 3 ~9,
TRUE ~NA_real_))
Si vous le pouvez ' t trouver une relation pour mettre à jour les valeurs que vous pouvez utiliser case_when
df$new <- df$visit + 6
Il semble que vous ayez juste besoin d'ajouter 6 à la ligne visit?
> df %>% mutate(new=visit+6)
id visit trt new
1 1001 1 A 7
2 1001 2 B 8
3 1001 3 C 9
4 1002 1 A 7
5 1002 2 B 8
6 1002 3 C 9
7 1003 1 A 7
8 1003 2 B 8
9 1003 3 C 9
Si vous cherchez une réponse qui fonctionne dans des situations génériques:
require(dplyr)
df = df %>%
dplyr::mutate(new = case_when(.$visit == 1 ~ 7,
.$visit == 2 ~ 8,
.$visit == 3 ~ 9))
Faites-moi savoir si c'est ce que vous cherchiez.