Perdón, este es el código
n1 <-c(974.0, 938.1, 908.9, 884.3, 862.6, 843.2, 825.4) alfa <-c(0.2642, 0.3754, 0.5014, 0.6273, 0.7380, 0.8250, 0.8875) datos <- data.frame(n1,alfa) datos #creo indice indices <- as.numeric(rownames(datos)) datos <- data.frame(indices, datos) datos valor <-1025 valorCalculado <- c() for (i in datos$indices) { if(i == 1) { n1 <- datos[datos$indice == i, 2] alpha <- datos[datos$indice == i, 3] valor <- valor-(valor-n1)^alpha valorCalculado <-c(valor) } else { # indices n1 alfa => 2 3 n1 <- datos[datos$indice == i, 2] alpha <- datos[datos$indice == i, 3] valor <- valor-(valor-n1)^alpha valorCalculado <- c(valorCalculado, valor) } } datos <- data.frame(datos, valorCalculado) datos > El 6 jul. 2022, a las 10:31, Álvaro Hernández Vicente <alvar...@um.es> > escribió: > > Hola, Andrés: > > Con la mezcla que has hecho de variables de distintos ejemplos no se > entiende mucho lo que necesitas. Si la fórmula que tienes en tu excel es > exactamente lo que quieres replicar en R, entonces puedes hacerlo con > > dd <- tibble::tribble(~N1, ~alfa, ~NN, NA, > NA, 1025, 974, 0.2642, 1022.2, > 938.1, 0.3754, 1016.9, > 908.9, 0.5014, 1006.4, 884.3, 0.6273, 986.1, > 862.6, 0.738, 951.1, > 843.2, 0.825, 903.5, 825.4, 0.8875, 855.7) > dd$nn_new <- 1025 for(i in 2:nrow(dd)){ dd$nn_new[i] <- (dd$nn_new[i - > 1] - (dd$nn_new[i - 1] - dd$N1[i])^dd$alfa[i]) } > > Un saludo, > Álvaro > > > On 7/6/22 14:39, Andrés Hirigoyen wrote: >> Hola Javier y Carlos, adjunto un ejemplo en excel para explicarme >> mejor, sigo sin conseguir el objetivo. >> Carlos, el valor inicial se lo doy como input. >> Saludos! >> >> El mar, 5 jul 2022 a la(s) 17:16, Carlos Ortega >> (c...@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 <http://www.qualityexcellence.es/> >> <http://www.qualityexcellence.es <http://www.qualityexcellence.es/>> >> >> El mar, 5 jul 2022 a las 22:07, Andrés Hirigoyen >> (<andreshirigo...@gmail.com <mailto:andreshirigo...@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 >> (c...@qualityexcellence.es <mailto:c...@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 <http://www.qualityexcellence.es/> >> <http://www.qualityexcellence.es <http://www.qualityexcellence.es/>> >> >> El mar, 5 jul 2022 a las 21:47, Andrés Hirigoyen >> (<andreshirigo...@gmail.com <mailto:andreshirigo...@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.marcu...@gmail.com <mailto:javier.ruben.marcu...@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 >> <andreshirigo...@gmail.com <mailto:andreshirigo...@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@r-project.org <mailto:R-help-es@r-project.org> >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> <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 >> >> <https://scholar.google.com/citations?hl=es&user=ubpY7s4AAAAJ&view_op=list_works&sortby=pubdate> >> >> <https://scholar.google.com/citations?hl=es&user=ubpY7s4AAAAJ&view_op=list_works&sortby=pubdate >> >> <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 >> <https://www.researchgate.net/profile/Andres-Hirigoyen>> >> >> - >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org <mailto:R-help-es@r-project.org> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> <https://stat.ethz.ch/mailman/listinfo/r-help-es> >> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es <http://www.qualityexcellence.es/> >> <http://www.qualityexcellence.es <http://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 >> >> <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 >> <https://www.researchgate.net/profile/Andres-Hirigoyen>> >> >> * >> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es <http://www.qualityexcellence.es/> >> <http://www.qualityexcellence.es <http://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 >> >> <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 >> <https://www.researchgate.net/profile/Andres-Hirigoyen>> >> >> * >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org <mailto:R-help-es@r-project.org> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> <https://stat.ethz.ch/mailman/listinfo/r-help-es> > > -- > Álvaro Hernández Vicente > Investigador predoctoral (FPU-UM). > Grupo de Investigación Cardiología Clínica y Experimental. > Departamento de Medicina Interna. > Universidad de Murcia, Murcia, Spain. > > Edif. LAIB/Departamental, despacho 2.57. > Campus de Ciencias de la Salud, Universidad de Murcia. > Avenida Buenavista, s/n, 30120, El Palmar, Murcia. > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org <mailto:R-help-es@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > <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