<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=ES-UY link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=ES>Hola Marcelino.<o:p></o:p></span></p><p class=MsoNormal><span lang=ES><o:p> </o:p></span></p><p class=MsoNormal><span lang=ES>No conocía la función.<o:p></o:p></span></p><p class=MsoNormal><span lang=ES><o:p> </o:p></span></p><p class=MsoNormal><span lang=ES>Me la voy a anotar.<o:p></o:p></span></p><p class=MsoNormal><span lang=ES><o:p> </o:p></span></p><p class=MsoNormal><span lang=ES>Gracias.<o:p></o:p></span></p><p class=MsoNormal><span lang=ES><o:p> </o:p></span></p><p class=MsoNormal><span lang=ES>Saludos,<o:p></o:p></span></p><p class=MsoNormal><span lang=ES><o:p> </o:p></span></p><p class=MsoNormal><span lang=ES>Sebastián. </span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Enviado desde <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Correo</a> para Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>De: </b><a href="mailto:marcelino.delacruz@urjc.es">Marcelino De La Cruz Rot</a><br><b>Enviado: </b>viernes, 17 de abril de 2020 13:46<br><b>Para: </b><a href="mailto:emilopezcano@gmail.com">Emilio L. Cano</a>; <a href="mailto:residuo.solow@gmail.com">residuo.solow@gmail.com</a><br><b>CC: </b><a href="mailto:r-help-es@r-project.org">Lista R</a>; <a href="mailto:javier.ruben.marcuzzi@gmail.com">Javier Marcuzzi</a><br><b>Asunto: </b>RE: [R-es] Convertir lista de precios a dolares por gramo</p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>Hola:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>También se podría hacer con R base, usando la función match:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'> <o:p></o:p></span></p><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>precios$Peso.gr  <-  precios$Peso * ratios$Ratio[match(precios$Unidad, ratios$Unidad)]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>precios$Precio.S  <-  precios$Precio * tipos$TC[match(precios$País, tipos$País)] <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>precios$Precio.S.gr  <-  precios$Precio.S/precios$Peso.gr<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>precios[,c("Producto", "País", "Precio.S.gr")]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'>Saludos<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div></div><div><p class=MsoNormal><span style='font-size:12.0pt;color:black'><o:p> </o:p></span></p></div><p class=MsoNormal><img border=0 width=555 height=2 style='width:5.7833in;height:.025in' id="Horizontal_x0020_Line_x0020_1" src="cid:image002.png@01D614C0.4C5A21E0"><o:p></o:p></p><div id=divRplyFwdMsg><p class=MsoNormal><b><span style='color:black'>De:</span></b><span style='color:black'> R-help-es <r-help-es-bounces@r-project.org> en nombre de Emilio L. Cano <emilopezcano@gmail.com><br><b>Enviado:</b> viernes, 17 de abril de 2020 17:55<br><b>Para:</b> residuo.solow@gmail.com <residuo.solow@gmail.com><br><b>Cc:</b> Lista R <r-help-es@r-project.org><br><b>Asunto:</b> Re: [R-es] Convertir lista de precios a dolares por gramo</span> <o:p></o:p></p><div><p class=MsoNormal> <o:p></o:p></p></div></div><p class=MsoNormal>Hola,<br><br>Hay muchas formas de hacerlo en una sola línea. A mí me gusta con dplyr, te pego debajo un ejemplo reproducible<br><br>Salud,<br><br>Emilio L. Cano<br><a href="http://emilio.lcano.com">http://emilio.lcano.com</a><br><br>——<br>precios <- read.table(<br>  text ="Producto País Precio Unidad Peso<br>A AR 10 kg 12<br>B BR 210 lb 0,5<br>C UY 3,5 kg 90<br>A BR 3 kg 3<br>C CO 345 lb 7,6<br>A CO 1200 gr 23000",<br>  dec = ",", header = TRUE,<br>  stringsAsFactors = FALSE)<br><br>tipos <- read.table(<br>  text ="País TC<br>AR 12<br>BR 1,8<br>CO 45<br>UY 0,5",<br>  dec = ",", header = TRUE,<br>  stringsAsFactors = FALSE)<br><br>ratios <- read.table(<br>  text = "Unidad Ratio<br>kg 1000<br>lb 0,89<br>gr 1",<br>  dec = ",", header = TRUE,<br>  stringsAsFactors = FALSE)<br><br>library(dplyr)<br>precios %>% <br>  inner_join(tipos) %>% <br>  inner_join(ratios) %>% <br>  mutate(Precio2 = Precio*TC/(Peso/Ratio))<br><br>——<br><br><br><br>> El 17 abr 2020, a las 17:40, residuo.solow@gmail.com escribió:<br>> <br>> Javier:<br>>  <br>> Si lo empecé a hacer con if anidados pero me queda gigantesco. <br>>  <br>> Saludos,<br>>  <br>> Sebastián.<br>>  <br>> Enviado desde Correo <<a href="https://go.microsoft.com/fwlink/?LinkId=550986">https://go.microsoft.com/fwlink/?LinkId=550986</a>> para Windows 10<br>>  <br>> De: Javier Marcuzzi <<a href="mailto:javier.ruben.marcuzzi@gmail.com">mailto:javier.ruben.marcuzzi@gmail.com</a>><br>> Enviado: jueves, 16 de abril de 2020 19:16<br>> Para: Sebastian Kruk <<a href="mailto:residuo.solow@gmail.com">mailto:residuo.solow@gmail.com</a>><br>> CC: Lista R <<a href="mailto:r-help-es@r-project.org">mailto:r-help-es@r-project.org</a>><br>> Asunto: Re: [R-es] Convertir lista de precios a dolares por gramo<br>>  <br>> Estimado Sebastian Kruk<br>>  <br>> Desde mi punto de vista es muy simple, varios If anidados, o en su defecto el condicional que a usted le resulte más cómodo.<br>>  <br>> Javier Rubén Marcuzzi<br>>  <br>> El jue., 16 abr. 2020 a las 18:49, Sebastian Kruk (<residuo.solow@gmail.com <<a href="mailto:residuo.solow@gmail.com">mailto:residuo.solow@gmail.com</a>>>) escribió:<br>> Estimados:<br>> <br>> Tengo tres data frame (datos inventados):<br>> <br>> A) Lista de precios de diferentes productos por paises.<br>> <br>> Producto País Precio Unidad Peso<br>> A AR 10 kg 12<br>> B BR 210 lb 0,5<br>> C UY 3,5 kg 90<br>> A BR 3 kg 3<br>> C CO 345 lb 7,6<br>> A CO 1200 gr 23000<br>> <br>> B) Tipo de cambio por país<br>> País TC<br>> AR 12<br>> BR 1,8<br>> CO 45<br>> UY 0,5<br>> <br>> C)Ratio para pasar a gr.<br>> Unidad Ratio<br>> kg 1000<br>> lb 0,89<br>> gr 1<br>> <br>> Quiero obtener un nuevo data frame en que todos los precios estén<br>> convertidos a dólares y expresados en gramos<br>> <br>> Obtendría los valores de la siguiente manera:<br>> <br>> Producto País Precio<br>> A AR 10x12/(12x1000)<br>> B BR 210x1,8/(0,5/0,89)<br>> C UY 3,5x0,5/(90x1000)<br>> A BR 3x1,8x3/1000<br>> C CO 345x4,5/(7,6*0,89)<br>> A CO 1200x4,5/(23000x1)<br>> <br>> ¿Hay alguna forma sencilla de hacerlo?<br>> <br>> Saludos,<br>> <br>> Sebastián.<br>> <br>>         [[alternative HTML version deleted]]<br>> <br>> _______________________________________________<br>> R-help-es mailing list<br>> R-help-es@r-project.org <<a href="mailto:R-help-es@r-project.org">mailto:R-help-es@r-project.org</a>><br>> <a href="https://stat.ethz.ch/mailman/listinfo/r-help-es">https://stat.ethz.ch/mailman/listinfo/r-help-es</a> <<a href="https://stat.ethz.ch/mailman/listinfo/r-help-es">https://stat.ethz.ch/mailman/listinfo/r-help-es</a>><br>>  <br>> _______________________________________________<br>> R-help-es mailing list<br>> R-help-es@r-project.org <<a href="mailto:R-help-es@r-project.org">mailto:R-help-es@r-project.org</a>><br>> <a href="https://stat.ethz.ch/mailman/listinfo/r-help-es">https://stat.ethz.ch/mailman/listinfo/r-help-es</a> <<a href="https://stat.ethz.ch/mailman/listinfo/r-help-es">https://stat.ethz.ch/mailman/listinfo/r-help-es</a>><br><br>        [[alternative HTML version deleted]]<br><br>_______________________________________________<br>R-help-es mailing list<br>R-help-es@r-project.org<br><a href="https://stat.ethz.ch/mailman/listinfo/r-help-es">https://stat.ethz.ch/mailman/listinfo/r-help-es</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>