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]]
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]]
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 > dataMargen 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]]