Re: [R-es] problema de fechas

2018-02-13 Thread Álvaro Hernández
Yo entiendo que lo que quiere es saber cómo hacer el 'ifelse' para que 
no le devuelva un vector numérico porque para transformarlo podría hacer 
simplemente 'as_date(fechas2)'.


El problema yo creo que es por tema coerción con el 'NA' (sumado al 
comportamiento de 'ifelse'). Estaba buscando alternativas como 
NA_character_, NA_numeric_, etc. pero no encuentro para fecha, así que, 
se podría hacer algo como:


fechas2 <- if_else(fechas > "2016-12-31", as_date(NA), fechas)

Un saludo
Álvaro

El 13/02/18 a las 01:04, Carlos Ortega escribió:

Hola,

Esta es una forma...


library(lubridate)
library(dplyr)

fechas <- c("2016-07-15", "2016-10-12", "2017-02-11")
fechas_new <- ymd(fechas)

res_out <- ifelse(year(fechas_new) > 2016, NA, fechas_new)
res_out

[1] 16997 17086NA

class(res_out) <- class(fechas_new)
res_out

[1] "2016-07-15" "2016-10-12" NA


No lo había visto hasta ahora, es un caso que se cuenta en la ayuda de
"ifelse()" con un ejemplo...

Saludos,
Carlos Ortega
www.qualityexcellence.es


2018-02-13 0:54 GMT+01:00 patricio fuenmayor :


hola Patricio, usa:
dplyr::if_else

 [[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es






___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de fechas

2018-02-13 Thread Carlos Ortega
Hola,

Sí, en el ejemplo de la ayuda de "ifelse" se advierte de este problema y
ofrece dos alternativas: una la que he propuesto y otra.
Con cualquiera de las dos el problema se resuelve.

## ifelse() strips attributes
## This is important when working with Dates and factors
x <- seq(as.Date("2000-02-29"), as.Date("2004-10-04"), by = "1 month")
## has many "-mm-29", but a few "-03-01" in the non-leap years
y <- ifelse(as.POSIXlt(x)$mday == 29, x, NA)
head(y) # not what you expected ... ==> need restore the class attribute:
class(y) <- class(x)
y
## ==> Again a case where it is better *not* to use ifelse(), but
## both more efficient and clear:
y2 <- x
y2[as.POSIXlt(x)$mday != 29] <- NA
stopifnot(identical(y2, y))

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 13 de febrero de 2018, 9:11, Álvaro Hernández  escribió:

> Yo entiendo que lo que quiere es saber cómo hacer el 'ifelse' para que no
> le devuelva un vector numérico porque para transformarlo podría hacer
> simplemente 'as_date(fechas2)'.
>
> El problema yo creo que es por tema coerción con el 'NA' (sumado al
> comportamiento de 'ifelse'). Estaba buscando alternativas como
> NA_character_, NA_numeric_, etc. pero no encuentro para fecha, así que, se
> podría hacer algo como:
>
> fechas2 <- if_else(fechas > "2016-12-31", as_date(NA), fechas)
>
> Un saludo
> Álvaro
>
> El 13/02/18 a las 01:04, Carlos Ortega escribió:
>
> Hola,
>>
>> Esta es una forma...
>>
>> library(lubridate)
>>> library(dplyr)
>>>
>>> fechas <- c("2016-07-15", "2016-10-12", "2017-02-11")
>>> fechas_new <- ymd(fechas)
>>>
>>> res_out <- ifelse(year(fechas_new) > 2016, NA, fechas_new)
>>> res_out
>>>
>> [1] 16997 17086NA
>>
>>> class(res_out) <- class(fechas_new)
>>> res_out
>>>
>> [1] "2016-07-15" "2016-10-12" NA
>>
>>
>> No lo había visto hasta ahora, es un caso que se cuenta en la ayuda de
>> "ifelse()" con un ejemplo...
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> 2018-02-13 0:54 GMT+01:00 patricio fuenmayor <
>> patricio.fuenma...@gmail.com>:
>>
>> hola Patricio, usa:
>>> dplyr::if_else
>>>
>>>  [[alternative HTML version deleted]]
>>>
>>> ___
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] problema de fechas

2018-02-13 Thread Patricio Suárez Gil
Muchas gracias a todos por vuestra ayuda. La solución que propone Carlos Ortega 
me funciona perfectamente. Gracias mil, Carlos.



Patricio Suárez Gil
Unidad de Investigación Área V-Gijón
Planta 5ª Impar
Hospital Universitario de Cabueñes
C/Prado, 395
33394 Gijón (Asturias)
Tfno: 985 185 000 (Ext. 85715)
@uinvest_psg
unidadinvestigacion.ar...@sespa.es
ESPAÑA











> El 13 feb 2018, a las 1:04, Carlos Ortega  
> escribió:
> 
> Hola,
> 
> Esta es una forma...
> 
> > library(lubridate)
> > library(dplyr)
> > 
> > fechas <- c("2016-07-15", "2016-10-12", "2017-02-11")
> > fechas_new <- ymd(fechas)
> > 
> > res_out <- ifelse(year(fechas_new) > 2016, NA, fechas_new)
> > res_out
> [1] 16997 17086NA
> > class(res_out) <- class(fechas_new)
> > res_out
> [1] "2016-07-15" "2016-10-12" NA  
> 
> 
> No lo había visto hasta ahora, es un caso que se cuenta en la ayuda de 
> "ifelse()" con un ejemplo...
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es 
> 
> 
> 2018-02-13 0:54 GMT+01:00 patricio fuenmayor  >:
> hola Patricio, usa:
> dplyr::if_else
> 
> [[alternative HTML version deleted]]
> 
> ___
> R-help-es mailing list
> R-help-es@r-project.org 
> https://stat.ethz.ch/mailman/listinfo/r-help-es 
> 
> 
> 
> 
> -- 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es 

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] ANOVA no da el mismo resultado

2018-02-13 Thread Yesica Pallavicini Fernandez
Hola,
He realizado 2 anovas, una simple y la otra multifactorial

 anova1<-lm(d$Y~d$T)
anova2<-lm(d$Y~d$T*d$A*d$B)

Las preguntas son:
1) en anova2 quiero testar el modelo

Y~T,
Y~A
Y~B
Y~TxA
Y~AxB
Y~AxBxT
¿Está bien planteada la función? anova2<-lm(d$Y~d$T*d$A*d$B)

2) En la salida de ambas anovas, el resultado es diferente para la misma
variable (T). Es mas, en la anova 1 el resultado es no significativo y en
anova2 si lo es ¿A que se debe esto?

3) Estos análisis los he repetido en SAS ¿ Por que puede dar diferente
resultado en un programa y en otro?

Muchísimas gracias por vuestra valiosa colaboración.

Saludos
Yésica

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] ANOVA no da el mismo resultado

2018-02-13 Thread Freddy Omar López Quintero
Hola.
El mar, 13-02-2018 a las 12:32 +0100, Yesica Pallavicini Fernandez
escribió:
> 1) en anova2 quiero testar el modelo
> 
> Y~T,
> Y~A
> Y~B
> Y~TxA
> Y~AxB
> Y~AxBxT
> ¿Está bien planteada la función? anova2<-lm(d$Y~d$T*d$A*d$B)
> 
> 2) En la salida de ambas anovas, el resultado es diferente para la
> misma
> variable (T). Es mas, en la anova 1 el resultado es no significativo
> y en
> anova2 si lo es ¿A que se debe esto?
> 
> 3) Estos análisis los he repetido en SAS ¿ Por que puede dar
> diferente
> resultado en un programa y en otro?

Si tu objetivo es el anova, yo creo que es mejor utilizar la función
aov().

A continuación un ejemplo utilizando los datos npk:

> summary(aov(yield ~ N*P*K, npk))
Df Sum Sq Mean Sq F value Pr(>F)  
N1  189.3  189.28   6.161 0.0245 *
P18.48.40   0.273 0.6082  
K1   95.2   95.20   3.099 0.0975 .
N:P  1   21.3   21.28   0.693 0.4175  
N:K  1   33.1   33.14   1.078 0.3145  
P:K  10.50.48   0.016 0.9019  
N:P:K1   37.0   37.00   1.204 0.2887  
Residuals   16  491.6   30.72 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

que produce lo mismo que:

proc anova data=npk;
class n p k;
model yield=n|p|k ;
run;

SourceDFAnova SSMean SquareF ValuePr > 
FN1189.2816667189.28166676.160.0245P18.40166678.40166670.270.6082N*P121.281666721.28166670.690.4175K195.201666795.20166673.100.0975N*K133.13533.1351.080.3145P*K10.48166670.48166670.020.9019N*P*K137.001666737.00166671.200.2887

Ojalá sea de utilidad.

¡Salud!

-- 
«...homines autem hominum causa esse generatos...»
 
Cicero
[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] ANOVA, otra pregunta

2018-02-13 Thread Yesica Pallavicini Fernandez
 Si recordías, quiero hacer el siguiente modelo.
Freddy ya me dió una solución. PEro me surgió otra duda:
En el modelo completo, debo meter la repecición ( 3 repeticiones) en el
modelo. Estas repeticiones están anidadas
repeticion(ByA)
¿Cómo se pone en la función "aov" de R?

Mil gracias

Y~T,
Y~A
Y~B
Y~TxA
Y~AxB
Y~AxBxT
¿Está bien planteada la función? anova2<-lm(d$Y~d$T*d$A*d$B)

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] ANOVA factores anidados

2018-02-13 Thread Yesica Pallavicini Fernandez
En cuanto meter un factor anidado en una ANOVA ¿puede quedar asi?
¿Será mejor usar modelos mixtos en vez de ANOVA?
Solo quiero testar la influencia de las repeticiones del ensayo.

A<-aov(rto~A*T*y*R*rep/A/T/R,dato))

Gracias

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


[R-es] Crear bucle

2018-02-13 Thread Andrés Hirigoyen
Buenas tardes para tod@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Xavier-Andoni Tibau Alberdi
Creo que necesitas usar la funcion: ifelse().

Saludos!

El 13 feb. 2018 22:16, "Andrés Hirigoyen" 
escribió:

> Buenas tardes para tod@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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Andrés Hirigoyen
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<
xaviti...@gmail.com> escribió:

> Creo que necesitas usar la funcion: ifelse().
>
> Saludos!
>
> El 13 feb. 2018 22:16, "Andrés Hirigoyen" 
> escribió:
>
>> Buenas tardes para tod@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@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/ *

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Xavier-Andoni Tibau Alberdi
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 :

> 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<
> xaviti...@gmail.com> escribió:
>
>> Creo que necesitas usar la funcion: ifelse().
>>
>> Saludos!
>>
>> El 13 feb. 2018 22:16, "Andrés Hirigoyen" 
>> escribió:
>>
>>> Buenas tardes para tod@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@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/ *
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Carlos Ortega
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   B1   191
2   B1   2   121
3   B1   3   221
4   B1   4   361
5   B1   5   361
6   B1   6   981
7   B2   1   582
8   B2   2   472
9   B2   3   542
10  B2   4   872
11  B2   5   262
12  B3   1   363
13  A3   2   353
14  A3   3   913
15  A3   4   103
16  A3   5   203
17  A3   6   363
18  A4   1   574
19  A4   2   304
20  A4   3   694
21  A4   4   324
22  A4   5   334
23  A4   6   364
24  A4   7   374
>

Saludos,
Carlos Ortega
www.qualityexcellence.es



El 13 de febrero de 2018, 22:32, Xavier-Andoni Tibau Alberdi <
xaviti...@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 :
>
> > 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<
> > xaviti...@gmail.com> escribió:
> >
> >> Creo que necesitas usar la funcion: ifelse().
> >>
> >> Saludos!
> >>
> >> El 13 feb. 2018 22:16, "Andrés Hirigoyen" 
> >> escribió:
> >>
> >>> Buenas tardes para tod@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@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/ *
> >
>
> [[alternative HTML version deleted]]
>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Andrés Hirigoyen
Excelente Carlos, muchas gracias. Me maree con [i] en el bucle que hacia.
Saludos



El 13 de febrero de 2018, 18:38, Carlos Ortega
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   B1   191
> 2   B1   2   121
> 3   B1   3   221
> 4   B1   4   361
> 5   B1   5   361
> 6   B1   6   981
> 7   B2   1   582
> 8   B2   2   472
> 9   B2   3   542
> 10  B2   4   872
> 11  B2   5   262
> 12  B3   1   363
> 13  A3   2   353
> 14  A3   3   913
> 15  A3   4   103
> 16  A3   5   203
> 17  A3   6   363
> 18  A4   1   574
> 19  A4   2   304
> 20  A4   3   694
> 21  A4   4   324
> 22  A4   5   334
> 23  A4   6   364
> 24  A4   7   374
> >
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
> El 13 de febrero de 2018, 22:32, Xavier-Andoni Tibau Alberdi <
> xaviti...@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 :
>>
>> > 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<
>> > xaviti...@gmail.com> escribió:
>> >
>> >> Creo que necesitas usar la funcion: ifelse().
>> >>
>> >> Saludos!
>> >>
>> >> El 13 feb. 2018 22:16, "Andrés Hirigoyen" 
>> >> escribió:
>> >>
>> >>> Buenas tardes para tod@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@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/ *
>> >
>>
>> [[alternative HTML version deleted]]
>>
>> ___
>> R-help-es mailing list
>> R-help-es@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/ *

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://s

Re: [R-es] ANOVA factores anidados

2018-02-13 Thread Javier Marcuzzi
Estimada Yesica Pallavicini Fernandez

Su problema es de principiante de R, no importa, escriba lo siguiente (?)
cada vez que necesita conocer como escribir algo, R la ayuda con algún
ejemplo como ser

aov(yield ~ block + N * P + K, npk)   lo siguiente / tiene un significado


?aov?lm


También existe anova.lm {stats}, entre otras posibilidades.


Javier Rubén Marcuzzi




El 13 de febrero de 2018, 11:58, Yesica Pallavicini Fernandez <
yesipa...@gmail.com> escribió:

> En cuanto meter un factor anidado en una ANOVA ¿puede quedar asi?
> ¿Será mejor usar modelos mixtos en vez de ANOVA?
> Solo quiero testar la influencia de las repeticiones del ensayo.
>
> A<-aov(rto~A*T*y*R*rep/A/T/R,dato))
>
> Gracias
>
> [[alternative HTML version deleted]]
>
> ___
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Crear bucle

2018-02-13 Thread Proyecto R-UCA
Buenas:

Una forma sin bucles:

> data <- read.table("/tmp/a.csv", header=TRUE, sep="",
na.strings="NA", dec=".", strip.white=TRUE)
> new_zon <- as.numeric(diff(data$Subzona) < 0)
> new_zon <- c(1, new_zon)
> new_zon <- cumsum(new_zon)
> data$new_zon <- new_zon
> data
   Margen Zona Subzona Long new_zona new_zon
1   B1   191   1
2   B1   2   121   1
3   B1   3   221   1
4   B1   4   361   1
5   B1   5   361   1
6   B1   6   981   1
7   B2   1   582   2
8   B2   2   472   2
9   B2   3   542   2
10  B2   4   872   2
11  B2   5   262   2
12  B3   1   363   3
13  A3   2   353   3
14  A3   3   913   3
15  A3   4   103   3
16  A3   5   203   3
17  A3   6   363   3
18  A4   1   574   4
19  A4   2   304   4
20  A4   3   694   4
21  A4   4   324   4
22  A4   5   334   4
23  A4   6   364   4
24  A4   7   374   4

Un saludo.

El mar, 13-02-2018 a las 18:42 -0300, Andrés Hirigoyen escribió:
> Excelente Carlos, muchas gracias. Me maree con [i] en el bucle que
> hacia.
> Saludos
> 
> 
> 
> El 13 de febrero de 2018, 18:38, Carlos Ortega 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   B1   191
> > 2   B1   2   121
> > 3   B1   3   221
> > 4   B1   4   361
> > 5   B1   5   361
> > 6   B1   6   981
> > 7   B2   1   582
> > 8   B2   2   472
> > 9   B2   3   542
> > 10  B2   4   872
> > 11  B2   5   262
> > 12  B3   1   363
> > 13  A3   2   353
> > 14  A3   3   913
> > 15  A3   4   103
> > 16  A3   5   203
> > 17  A3   6   363
> > 18  A4   1   574
> > 19  A4   2   304
> > 20  A4   3   694
> > 21  A4   4   324
> > 22  A4   5   334
> > 23  A4   6   364
> > 24  A4   7   374
> > > 
> > 
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> > 
> > 
> > 
> > El 13 de febrero de 2018, 22:32, Xavier-Andoni Tibau Alberdi <
> > xaviti...@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  > > l.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<
> > > > xaviti...@gmail.com> escribió:
> > > > 
> > > > > Creo que necesitas usar la funcion: ifelse().
> > > > > 
> > > > > Saludos!
> > > > > 
> > > > > El 13 feb. 2018 22:16, "Andrés Hirigoyen"  > > > > ail.com>
> > > > > escribió:
> > > > > 
> > > > > > Buenas tardes para tod@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=z