Comment créer une nouvelle colonne avec des valeurs répétées basées sur une autre colonne?

voix
-1

Voici ce que j'ai actuellement. J'ai une colonne nommée « test1M », qui a des valeurs de 0 ou 1. Si la valeur est 1, je veux définir les 20 valeurs suivantes dans la colonne « test1Mxx » à la valeur 1.

Si je lance ce code, je reçois une erreur de (erreur si (données test1M de $ [x] == 1) {: argument est de longueur nulle).

Ce qui est une meilleure façon pour moi de faire cela? Le code est assez répétitif, donc je voudrais que minimiser si possible. S'il y a un moyen de transformer cela en une fonction qui serait préférable, pour que je puisse changer le nombre de valeurs (par exemple, peut-être les 25 valeurs suivantes, ou 40 valeurs, etc.)

for(x in data$test1){
  if(data$test1[x]==1){
    data$test2[x+1]=1
    data$test2[x+2]=1
    data$test2[x+3]=1
    data$test2[x+4]=1
    data$test2[x+5]=1
    data$test2[x+6]=1
    data$test2[x+7]=1
    data$test2[x+8]=1
    data$test2[x+9]=1
    data$test2[x+10]=1
    data$test2[x+11]=1
    data$test2[x+12]=1
    data$test2[x+13]=1
    data$test2[x+14]=1
    data$test2[x+15]=1
    data$test2[x+16]=1
    data$test2[x+17]=1
    data$test2[x+18]=1
    data$test2[x+19]=1
    data$test2[x+20]=1}
 }
Créé 27/11/2018 à 15:12
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Votre boucle ne fonctionne pas parce que xest une valeur data$test1, pas un indice de celui - ci. Vous avez besoin de quelque chose comme:

data$test2 <- data$test1
for (x in seq_along(data$test1))
  if (data$test1[x] == 1) data$test2[x + 1:20] <- 1
Créé 27/11/2018 à 15:38
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more