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 :

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)
Ç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
  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]))}
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
Erreur : '=' inattendu(e) in:
"    mutate(
      VEC_1[i] ="
Merci !