[R-es] Ayuda con Función nueva variable

Andrés Hirigoyen @ndre@h|r|goyen @end|ng |rom gm@||@com
Mar Jul 5 22:22:57 CEST 2022


Gracias Carlos, un abrazo.


El mar, 5 jul 2022 a la(s) 17:16, Carlos Ortega (cof using 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 using 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 using 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 using 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 using 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 using 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 using 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 using 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]]



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