[R-es] Pasar cotización en pesos a dólares usando tipo cambio día hábil anterior

Carlos Ortega cof en qualityexcellence.es
Dom Oct 15 00:45:27 CEST 2017


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 <
xavitibau en gmail.com> 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 <residuo.solow en gmail.com>:
>
>> 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 <xavitibau en gmail.com>
>> *Enviado: *sábado, 14 de octubre de 2017 4:30
>> *Para: *Sebastian Kruk <residuo.solow en gmail.com>
>> *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 <residuo.solow en gmail.com>:
>>
>> 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 <xavitibau en gmail.com>
>> *Enviado: *sábado, 14 de octubre de 2017 4:26
>> *Para: *Sebastian Kruk <residuo.solow en gmail.com>
>> *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 <residuo.solow en gmail.com>:
>>
>> 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
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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