[R-es] Crear bucle

Andrés Hirigoyen andreshirigoyen en gmail.com
Mar Feb 13 22:42:00 CET 2018


Excelente Carlos, muchas gracias. Me maree con [i] en el bucle que hacia.
Saludos



El 13 de febrero de 2018, 18:38, Carlos Ortega<cof en qualityexcellence.es>
escribió:

> Hola,
>
> Una forma puede ser la siguiente...
> Para comparar, he creado una nueva columna "new_zona" que es la que se va
> rellenando con un bucle...
>
> #-------------------
> > cont <- 1
> > new_zona <- 0
> > for(i in 1:nrow(data)) {
> +   new_zona[i] <- cont
> +   if(data$Subzona[i] == 1 & i > 1) {
> +     cont <- cont + 1
> +     new_zona[i] <- cont
> +   }
> + }
> >
> > data$new_zona <- new_zona
> > data
>    Margen Zona Subzona Long new_zona
> 1       B    1       1    9        1
> 2       B    1       2   12        1
> 3       B    1       3   22        1
> 4       B    1       4   36        1
> 5       B    1       5   36        1
> 6       B    1       6   98        1
> 7       B    2       1   58        2
> 8       B    2       2   47        2
> 9       B    2       3   54        2
> 10      B    2       4   87        2
> 11      B    2       5   26        2
> 12      B    3       1   36        3
> 13      A    3       2   35        3
> 14      A    3       3   91        3
> 15      A    3       4   10        3
> 16      A    3       5   20        3
> 17      A    3       6   36        3
> 18      A    4       1   57        4
> 19      A    4       2   30        4
> 20      A    4       3   69        4
> 21      A    4       4   32        4
> 22      A    4       5   33        4
> 23      A    4       6   36        4
> 24      A    4       7   37        4
> >
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
> El 13 de febrero de 2018, 22:32, Xavier-Andoni Tibau Alberdi <
> xavitibau en gmail.com> escribió:
>
>> Perdona,  toda la razón, no miré bien el problema antes de responder.
>>
>> Seguro que hay una manera más eficiente. Pero yo lo haría con un bucle,
>> luego usas una bariable dummy, digamos zonna_d, que incremente su valor en
>> 1 cada vez que subzona es ==1. Entonces zona = zonna_d.
>>
>> Se entiende?
>>
>> Saludos,
>>
>> Xavier
>>
>> 2018-02-13 22:26 GMT+01:00 Andrés Hirigoyen <andreshirigoyen en gmail.com>:
>>
>> > Xavier el tema que no logro solucionar es pasar de subzona==1 a
>> > subzona==2. Probé con ifelse pero me cambia los valores de toda la
>> columan
>> > cuando cambia de zona.
>> > Gracias por responder
>> >
>> > El 13 de febrero de 2018, 18:19, Xavier-Andoni Tibau Alberdi<
>> > xavitibau en gmail.com> escribió:
>> >
>> >> Creo que necesitas usar la funcion: ifelse().
>> >>
>> >> Saludos!
>> >>
>> >> El 13 feb. 2018 22:16, "Andrés Hirigoyen" <andreshirigoyen en gmail.com>
>> >> escribió:
>> >>
>> >>> Buenas tardes para tod en s
>> >>> (de nuevo)
>> >>>
>> >>> Tengo el siguiente dataframe:
>> >>> margen<-c("A","B","A","B","A","B","A","B","A","B","A","B","A
>> >>> ","B","A","B","A","B","A","B","A","B","A","B")
>> >>> margen<-sort(margen, decreasing=T)
>> >>> long<-c(9,12,22,36,36,98,58,47,54,87,26,36,35,91,10,20,36,57
>> >>> ,30,69,32,33,36,37)
>> >>>
>> >>> subzona<-c(1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7)
>> >>> zona<-c(1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4)
>> >>>
>> >>> data<-data.frame(Margen=margen,  Zona=zona,
>> Subzona=subzona,Long=long)
>> >>>
>> >>> La Variable "zona" es creada a mano cuando dentro de un mismo
>> "Margen" la
>> >>> "subzona"==1.
>> >>> Luego sigue valiendo 1 a medida que las observaciones de la "subzona"
>> >>> avanzan (1,2,...n) . Cuando aparece una nueva observación ("subzona")
>> con
>> >>> el número 1, la "zona" cambia a 2 , luego a 3 etc. hasta q inicia en 1
>> >>> cuando cambio de "Margen"
>> >>>
>> >>> Me gustaría crear la variable Zona de forma automática, es decir
>> cuando
>> >>> la
>> >>> "subzona"==1, "zona" valdría 1, hasta que "subzona" valga 1 de nuevo
>> allí
>> >>> la "zona" valdrá 2 y así sucesivamente (hasta que cambie a
>> "Margen"==2 e
>> >>> inicia de nuevo).
>> >>> Estoy con terribles líos con if ifelse loops... Espero haber sido
>> claro
>> >>>
>> >>> Saludos y desde ya muchas gracias
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>>
>> >>>         [[alternative HTML version deleted]]
>> >>>
>> >>> _______________________________________________
>> >>> R-help-es mailing list
>> >>> R-help-es en r-project.org
>> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >>>
>> >>
>> >
>> >
>> > --
>> > *Andrés Hirigoyen*
>> > * Prof. Ciencias Biológicas*
>> > *Ing. Agr. Forestal (MSc) *
>> >
>> > *http://andreshirigoyen.com/web/ <http://andreshirigoyen.com/web/>*
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
*Andrés Hirigoyen*
* Prof. Ciencias Biológicas*
*Ing. Agr. Forestal (MSc) *

*http://andreshirigoyen.com/web/ <http://andreshirigoyen.com/web/>*

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es