Bonjour à tous,
je cherche à faire une boucle for pour recoder plusieurs variables : lorsque l'info de "test" est manquante, alors prendre l'info de "test.v1".
le dataframe ressemble à ça :
Ça m'avait l'air très simple à faire, mais je n'arrive pas du tout à m'en sortir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 test1 <- c("A","B","A","A",NA,"B","A",NA,"A") test1.v1 <- c("B",NA,"B","B","A","B","B",NA,"A") test2 <- c("B","B","B","B",NA,"C","C","C","C") test2.v1 <- c("C",NA,"A","A","B","B","C",NA,"C") test3 <- c("A","B","B","B",NA,"C","C",NA,"C") test3.v1 <- c("B","A","B",NA,"A","A","A","A",NA) test4 <- c(NA,"B","B","A",NA,"B","A",NA,"A") test4.v1 <- c("B","B","B","A","A","B","B","B","B") df1 <- data.frame(test1,test1.v1,test2,test2.v1,test3,test3.v1,test4,test4.v1)
j'ai cette erreur qui apparaît, est-ce que la boucle for ne s'utilise pas avec un case_when ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 VEC_1 <- c("test1","test2","test3","test4","test5","test6","test7","test8","test9") VEC_2 <- c("test1.v1","test2.v1","test3.v1","test4.v1","test5.v1","test6.v1","test7.v1","test8.v1","test9.v1") for (i in 1:(min(length(VEC_1), length(VEC_2)))){ df2 <- df1 %>% mutate( VEC_1[i] = case_when( is.na(VEC_1[i]) & !is.na(VEC_2[i]) ~ VEC_2[i], TRUE ~ VEC_1[i]))}
Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Erreur : '=' inattendu(e) in: " mutate( VEC_1[i] ="
Partager