Los NAs de los fines de semana los puedes completar usando alguna de estas funciones, que seguro que irán más rápidas que usar bucles...
--------- https://stackoverflow.com/questions/7735647/replacing-nas-with-latest-non-na-value There are a bunch of packages offering na.locf (NA Last Observation Carried Forward) functions: - xts - xts::na.locf - zoo - zoo::na.locf - imputeTS - imputeTS::na.locf - spacetime - spacetime::na.locf And also other packages where this function is named differently. --------- Es esta página encontrarás algunas otras funciones que mejoran el rendimiento de éstas. Gracias, Carlos Ortega www.qualityexcellence.es El 14 de octubre de 2017, 23:02, Xavier-Andoni Tibau Alberdi < [email protected]> escribió: > Buenas, > > Vigila que solo nos lo has enviado a unos pocos y no a todos los miembros > de la lista. Te lo comento porque queda registrado y puede ser util para > otras personas. > > En tu caso yo lo que haria es: > 1. unir ambos data frames de forma asimetrica, por la fecha. Puedes > hacerlo con el comando ful_join() o left_join() de dplyr. > 2. Quando todo este unido en un data frame con las columans, Dia precio y > TC (solo habrá TC en algunos dias, en los fines de semana será NA), haces > un bucle para rellenar una nueva columna que te dira el cambio. El bucle > que tienes que usar es doble, por un ladoo for, i por el otro while. > Con el for, iremos pasando fila por fila para seleccionar el valor a > rellenar. Así que haremos una i por cada fila. El bucle preguntara, si el > valor TC de la fila i no es NA "!is.na(datos[i, "TC"]). En caso > afirmativo calculamos el cambio de ese dia. En caso negativo creamos una > variable temporal m i la ponemos igual a i-1. A continuacion haces un > while, cuya causa sea que la columna TC de la fila m no sea nulo. Si sigue > siendo nulo, entonces restas uno a m, si no es nulo, continuas, i calculas > el cambio de la fila i con el valor de cambio de la fila m. > > Espero que se entienda. Hay otras formas. Personalmente haria una funcion > y la aplicaria pero creo que es una forma de facil comprensión que te > permite hacer lo que dices facilmente. > > Por cierto, el while sirve para asegurarte que si hay mas de dos dias de > fiesta, no de error solo con el for. > > Un saludo, > > Xavier Tibau > > 2017-10-14 21:12 GMT+02:00 Sebastian Kruk <[email protected]>: > >> Estimados Usuarios-R: >> >> >> >> Muy buenas tardes. >> >> >> >> Tengo un listado de precios en pesos por día: >> >> >> >> Día Precio en $ >> >> 01/01/04 0,04 >> >> 02/01/04 0,11 >> >> 03/01/04 0,11 >> >> 04/01/04 0,04 >> >> 05/01/04 0,10 >> >> 06/01/04 0,00 >> >> 07/01/04 0,10 >> >> 08/01/04 0,10 >> >> 09/01/04 0,14 >> >> 10/01/04 0,21 >> >> 11/01/04 0,21 >> >> 12/01/04 0,21 >> >> 13/01/04 0,21 >> >> 14/01/04 0,21 >> >> 15/01/04 0,21 >> >> 16/01/04 0,21 >> >> 17/01/04 0,27 >> >> 18/01/04 0,27 >> >> 19/01/04 0,27 >> >> 20/01/04 0,23 >> >> 21/01/04 0,23 >> >> 22/01/04 0,23 >> >> 23/01/04 0,27 >> >> 24/01/04 0,27 >> >> 25/01/04 0,27 >> >> 26/01/04 0,27 >> >> 27/01/04 0,27 >> >> 28/01/04 0,28 >> >> 29/01/04 0,27 >> >> 30/01/04 0,27 >> >> 31/01/04 0,27 >> >> >> >> Lo quiero pasar a dólares usando las cotizaciones pero solo tengo de los >> días hábiles: >> >> >> >> Día >> >> TC >> >> 29/12/03 >> >> 29,3400 >> >> 02/01/04 >> >> 29,0900 >> >> 05/01/04 >> >> 29,0900 >> >> 07/01/04 >> >> 29,2400 >> >> 08/01/04 >> >> 29,4400 >> >> 09/01/04 >> >> 29,4400 >> >> 12/01/04 >> >> 29,4400 >> >> 13/01/04 >> >> 29,4900 >> >> 14/01/04 >> >> 29,4400 >> >> 15/01/04 >> >> 29,4400 >> >> 16/01/04 >> >> 29,4400 >> >> 19/01/04 >> >> 29,4900 >> >> 20/01/04 >> >> 29,5400 >> >> 21/01/04 >> >> 29,5400 >> >> 22/01/04 >> >> 29,5400 >> >> 23/01/04 >> >> 29,4800 >> >> 26/01/04 >> >> 29,3800 >> >> 27/01/04 >> >> 29,4800 >> >> 28/01/04 >> >> 29,4300 >> >> 29/01/04 >> >> 29,4350 >> >> 30/01/04 >> >> 29,4350 >> >> >> >> En este ejemplo el precio 0.04 del 01/01/04 lo tendría que dividir entre >> el TC 29.34 del 29/12/03 dado que a fin de año se mantuvo la cotización del >> ultimo día hábil. >> >> >> >> Para los precios del 3 y 4 de enero de 2004 usaría el TC del 2 de enero. >> >> >> >> En principio haría un merge por la fecha, ¿cómo hago con los otros casos >> de días no laborables? >> >> >> >> Saludos, >> >> >> >> Sebastián. >> >> >> >> Enviado desde Correo <https://go.microsoft.com/fwlink/?LinkId=550986> >> para Windows 10 >> >> >> >> *De: *Xavi tibau alberdi <[email protected]> >> *Enviado: *sábado, 14 de octubre de 2017 4:30 >> *Para: *Sebastian Kruk <[email protected]> >> *Asunto: *Re: [R-es] convertir numeric que tiene como nombres la fecha >> en ts >> >> >> >> Genial! >> >> >> >> Cualquier otra duda, ya sabes. >> >> >> >> Un saludo, >> >> >> >> Xavier Tibau >> >> >> >> 2017-10-14 9:28 GMT+02:00 Sebastian Kruk <[email protected]>: >> >> Si, Xavi. >> >> >> >> El rowname es la fecha. >> >> >> >> Saludos, >> >> >> >> Sebastian. >> >> >> >> Enviado desde Correo <https://go.microsoft.com/fwlink/?LinkId=550986> >> para Windows 10 >> >> >> >> *De: *Xavi tibau alberdi <[email protected]> >> *Enviado: *sábado, 14 de octubre de 2017 4:26 >> *Para: *Sebastian Kruk <[email protected]> >> *Asunto: *Re: [R-es] convertir numeric que tiene como nombres la fecha >> en ts >> >> >> >> Buenas, >> >> >> >> Te refieres a que el rowname es una fecha? >> >> >> >> Sí así és, lo que tienes que hacer es poner los nombres en una variable. >> i luego a ts. Algo como: >> >> >> >> timeSeries <- ts(rowname(tu_vector)) >> >> >> >> Si no es esto a lo que te referies, indicanos que quieres decir por >> nombre de observación. >> >> >> >> Un saludo, >> >> >> >> Xavier Tibau >> >> >> >> 2017-10-14 6:57 GMT+02:00 Sebastian Kruk <[email protected]>: >> >> Estimados listeros: >> >> Tengo un vector numérico en que el nombre de cada observación corresponde >> a >> una fecha. >> >> ¿Puedo convertirlo en una vector ts? >> >> Saludos, >> >> Sebas. >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> [email protected] >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >> >> >> >> >> >> >> > > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
