Gracias Carlos, un abrazo.
El mar, 5 jul 2022 a la(s) 17:16, Carlos Ortega (cof en qualityexcellence.es)
escribió:
> Hola,
>
> Bueno, puedes combinar varios lags en la nueva variable...
>
> > library(dplyr)
> > myiris <- iris
> > alfa <- 1.7
> > expo <- 0.263
> > myiris %>%
> + mutate( mynewSL = lag(Sepal.Length) * 2) %>%
> + mutate( *mynewSLcompleja* >
lag(Sepal.Length)*(lag(Sepal.Length)-alfa)^expo) %>%
> + relocate( mynewSL, .before = Sepal.Width) %>%
> + relocate( mynewSLcompleja, .before = mynewSL) %>%
> + head()
> Sepal.Length *mynewSLcompleja *mynewSL Sepal.Width Petal.Length
> Petal.Width Species
> 1 *5.1 * NA NA 3.5 1.4
> 0.2 setosa
> 2 4.9 7.036378 10.2 3.0 1.4
> 0.2 setosa
> 3 4.7 6.653506 9.8 3.2 1.3
> 0.2 setosa
> 4 4.6 6.274523 9.4 3.1 1.5
> 0.2 setosa
> 5 5.0 6.086512 9.2 3.6 1.4
> 0.2 setosa
> 6 5.4 6.844460 10.0 3.9 1.7
> 0.4 setosa
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El mar, 5 jul 2022 a las 22:07, Andrés Hirigoyen (<
> andreshirigoyen en gmail.com>) escribió:
>
>> Gracias Carlos.
>> Siguiendo tu ejemplo, en mi nueva variable el valor de la observación 2
(
>> *10.2*) es el valor que entra para calcular el valor de la observación
3
>> (*4.7 y 10.2*)
>>
>> NNn+1=10.2*(10.2-4.7)^0.263
>> Saludos
>>
>> El mar, 5 jul 2022 a la(s) 16:57, Carlos Ortega (cof en
qualityexcellence.es)
>> escribió:
>>
>>> Hola,
>>>
>>> No entiendo muy bien lo que comentas de que aparecen nuevas
variables.
>>> De esta forma calculo un nuevo "Sepal.Length" que es el
valor anterior
>>> multiplicado por 2.
>>>
>>> > myiris %>%
>>> + mutate( mynewSL = lag(Sepal.Length) * 2) %>%
>>> + relocate( mynewSL, .before = Sepal.Width) %>%
>>> + head()
>>> Sepal.Length mynewSL Sepal.Width Petal.Length Petal.Width Species
>>> 1 *5.1 * NA 3.5 1.4 0.2
setosa
>>> 2 4.9 *10.2 * 3.0 1.4 0.2
setosa
>>> 3 4.7 9.8 3.2 1.3 0.2 setosa
>>> 4 4.6 9.4 3.1 1.5 0.2 setosa
>>> 5 5.0 9.2 3.6 1.4 0.2 setosa
>>> 6 5.4 10.0 3.9 1.7 0.4 setosa
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El mar, 5 jul 2022 a las 21:47, Andrés Hirigoyen (<
>>> andreshirigoyen en gmail.com>) escribió:
>>>
>>>> Hola Javier, gracias por tu respuesta.
>>>> Hice algo similar a lo que propones con la función lag(), que
retarda
>>>> los
>>>> valores de la variable. El tema que cada vez que lo calculo o
me
>>>> sobreescribe o me genera una nueva columna y termino con varias
columnas
>>>> nuevas.
>>>>
>>>> El mar, 5 jul 2022 a la(s) 16:36, Javier Marcuzzi (
>>>> javier.ruben.marcuzzi en gmail.com) escribió:
>>>>
>>>> > Estimado Andrés Hirigoyen
>>>> >
>>>> > Es bastante complejo pero puede resultar simple.
>>>> > Todo depende de como trabajes con los datos, en una
oportunidad en esa
>>>> > lista me ayudaron utilizando do.call
>>>> >
>>>> > Yo intentaría primero modificando los datos, por ejemplo
al data.frame
>>>> > original le tomo y realizo un contador, que inicie en 0 e
incremente
>>>> en 1,
>>>> > a este resultado se lo agrego en una nueva columna al
mismo
>>>> data.frame.
>>>> >
>>>> > Suponiendo que en los datos, cada registro tiene una
numeración que
>>>> inicia
>>>> > en 1, la columna agregada comienza en 0, por lo que puedo
realizar una
>>>> > búsqueda de una columna sobre la otra que está corrida
justo un
>>>> número,
>>>> > pero en la misma fila de datos, lo que facilita el
recorrido.
>>>> >
>>>> > Es una idea, seguramente hay formas más eficientes, pero
esta es
>>>> simple de
>>>> > entender.
>>>> >
>>>> > Javier Rubén Marcuzzi
>>>> >
>>>> >
>>>> > > El 5 jul. 2022, a las 15:59, Andrés Hirigoyen <
>>>> andreshirigoyen en gmail.com>
>>>> > escribió:
>>>> > >
>>>> > > Buenas tardes.
>>>> > > Necesito ayuda para hacer una función o un bucle que
me permita
>>>> calcular
>>>> > > una nueva variable empleando el valor anterior de la
misma (para la
>>>> > > observación anterior). En un dataframe de varias
columnas.
>>>> > >
>>>> > > Por ejemplo:
>>>> > > Para calcular el valor de NN para la observación 2,
emplea el NN de
>>>> la
>>>> > > observación 1, para el NN de la tercera emplea el NN
de la segunda y
>>>> > > así hasta todas las observaciones.
>>>> > > Algo así:
>>>> > > NN(i-1)<-valor inicial
>>>> > > NNi=NN(i-1)*(NN(i-1)-Alfa)^0.263
>>>> > > NNi+1=NN(i)*(NN(i)-Alfa)^0.263...
>>>> > >
>>>> > > NNn+1=NN(n)*(NN(n)-Alfa)^0.263
>>>> > > He intentado varias cosas pero no tuve suerte. 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
>>>> >
>>>> >
>>>>
>>>> --
>>>> *Dr. **Andrés Hirigoyen*
>>>> *Ing. Agr. **(MSc)*
>>>> * Prof. Ciencias Biológicas*
>>>> Scholar Andrés
>>>> <
>>>>
https://scholar.google.com/citations?hl=es&user=ubpY7s4AAAAJ&view_op=list_works&sortby=pubdate
>>>> >
>>>> Researchgate Andrés <
>>>> https://www.researchgate.net/profile/Andres-Hirigoyen>
>>>>
>>>> -
>>>>
>>>> [[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
>>>
>>
>>
>> --
>> *Dr. **Andrés Hirigoyen*
>> *Ing. Agr. **(MSc)*
>> * Prof. Ciencias Biológicas*
>> Scholar Andrés
>>
<https://scholar.google.com/citations?hl=es&user=ubpY7s4AAAAJ&view_op=list_works&sortby=pubdate>
>> Researchgate Andrés
>> <https://www.researchgate.net/profile/Andres-Hirigoyen>
>>
>> -
>>
>>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
--
*Dr. **Andrés Hirigoyen*
*Ing. Agr. **(MSc)*
* Prof. Ciencias Biológicas*
Scholar Andrés
<https://scholar.google.com/citations?hl=es&user=ubpY7s4AAAAJ&view_op=list_works&sortby=pubdate>
Researchgate Andrés
<https://www.researchgate.net/profile/Andres-Hirigoyen>
-
[[alternative HTML version deleted]]