[R-es] Crear bucle

Carlos Ortega cof en qualityexcellence.es
Mar Feb 13 22:38:44 CET 2018


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

	[[alternative HTML version deleted]]



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