{"id":440,"date":"2014-07-03T14:39:58","date_gmt":"2014-07-03T19:39:58","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/nemo\/?p=440"},"modified":"2014-07-04T17:42:12","modified_gmt":"2014-07-04T22:42:12","slug":"diferencias-entre-in-y-match-o-del-como-hacer-una-actualizacion-condicional-de-valores-dentro-de-un-data-frame-utilizando-valores-de-otro-data-frame-parte-1","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/03\/diferencias-entre-in-y-match-o-del-como-hacer-una-actualizacion-condicional-de-valores-dentro-de-un-data-frame-utilizando-valores-de-otro-data-frame-parte-1\/","title":{"rendered":"Diferencias entre %in% y match o del como hacer una actualizaci\u00f3n condicional de valores dentro de un data.frame utilizando valores de otro data.frame (Parte 1)"},"content":{"rendered":"<div id=\"attachment_444\" style=\"width: 628px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/Actualizar_dataframe.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-444\" class=\"size-full wp-image-444\" src=\"http:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/Actualizar_dataframe.png\" alt=\"Actualizar data.frame utilizando como referencia otro data.frame\" width=\"628\" height=\"210\" srcset=\"https:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/Actualizar_dataframe.png 628w, https:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/Actualizar_dataframe-300x100.png 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/a><p id=\"caption-attachment-444\" class=\"wp-caption-text\">Actualizar data.frame utilizando como referencia otro data.frame<\/p><\/div>\n<p>Escribo este post como respuesta a una pregunta de un colega y adem\u00e1s porque sirve muy bien como ejemplo para entender un poco m\u00e1s del indexado de R.<\/p>\n<h2 style=\"font-size: 1.8em\">Problema<\/h2>\n<p>Supongamos que tenemos las calificaciones de un curso en un data.frame, algo as\u00ed como:<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># Declarar una semilla para reproducibilidad del ejemplo<\/span>\r\n<a href=\"http:\/\/inside-r.org\/r-doc\/base\/set.seed\"><span style=\"color: #003399;font-weight: bold\">set.seed<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">5<\/span><span style=\"color: #009900\">)<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># crear un data.frame base<\/span>\r\ndf_base &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <span style=\"color: #000000;font-weight: bold\">LETTERS<\/span><span style=\"color: #009900\">[<\/span><span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">6<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> \r\n    <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Len = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span><\/pre>\n<\/div>\n<\/div>\n<p><span class=\"Apple-style-span\" style=\"border-collapse: separate;color: #000000;font-family: sans-serif;font-size: 12px;font-style: normal;font-variant: normal;font-weight: normal;letter-spacing: normal;line-height: normal;text-align: -webkit-auto;text-indent: 0px;background-color: #ffffff\">Pero luego de una recalificaci\u00f3n debemos cambiar las notas de matem\u00e1ticas a los alumnos C, E y F seg\u00fan lo siguiente:<\/span><\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># crear un data.frame que contendra los valores a modificar<\/span>\r\ndf_modificatorio &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #0000ff\">\"E\"<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"C\"<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">99<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #cc66cc\">88<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame<\/span>\r\ndf_modificatorio\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    E  99<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    C  88\r\n<\/span><\/pre>\n<\/div>\n<\/div>\n<p>\u00bfQue opciones hay para hacerlo en R?<\/p>\n<h2 style=\"font-size: 1.8em\">Soluciones<\/h2>\n<h2 style=\"font-size: 1.8em\">Reemplazo uno a uno<\/h2>\n<p>Bueno, si fuesen pocos elementos lo m\u00e1s sencillo es hacerlo observaci\u00f3n a observaci\u00f3n filtrando en este caso el alumno y la variable que se va a modificar, en R ser\u00eda:<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># filtrar por cada elemento a modificar y asignar el nuevo valor<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum == <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #0000ff\">\"E\"<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> &lt;- <span style=\"color: #cc66cc\">99<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum == <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #0000ff\">\"C\"<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> &lt;- <span style=\"color: #cc66cc\">88<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame con valores modificados<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  88  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  99   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5\r\n<\/span><\/pre>\n<\/div>\n<\/div>\n<p>Pero obviamente esto no es una opci\u00f3n a considerar si son muchos reemplazos a la vez o si lo que se quiere es realizar un script donde el data.frame df_modificatorio cambiar\u00e1 a cada ejecuci\u00f3n del script, por lo que pasamos a la siguiente opci\u00f3n<\/p>\n<h2 style=\"font-size: 1.8em\">Reemplazo por conjunto de valores y filtrando por una s\u00f3la variable (esta soluci\u00f3n tiene limitantes)<\/h2>\n<h3 style=\"font-size: 1.8em\">\u00a1\u00a1\u00a1Peligro, No usar el operador<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">%in%<\/code>!!!<\/h3>\n<p><span style=\"color: #666666;font-style: italic\"><span class=\"Apple-style-span\" style=\"border-collapse: separate;color: #000000;font-family: sans-serif;font-size: 12px;font-style: normal;font-variant: normal;font-weight: normal;letter-spacing: normal;line-height: normal;text-align: -webkit-auto;text-indent: 0px;background-color: #ffffff\"><span class=\"Apple-style-span\" style=\"border-collapse: separate;color: #000000;font-family: sans-serif;font-size: 12px;font-style: normal;font-variant: normal;font-weight: normal;letter-spacing: normal;line-height: normal;text-align: -webkit-auto;text-indent: 0px;background-color: #ffffff\">Normalmente cuando se desea hacer un filtro para varios elementos se usa el operador<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">%in%<\/code>, pero en este caso este oprador nos puede llevar a cometer errores puesto que<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">%in%<\/code><span class=\"Apple-converted-space\">\u00a0<\/span>devuelve todos los valores coincidentes pero en el orden del data.frame original y si por un lado tenemos los valores en el orden original (<code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">df_base<\/code>) y por el otro los valores ordenados de otra forma (<code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">df_modificatorio<\/code>) entonces asignaremos erroneamente los valores, lo explico mejor en el bloque de c\u00f3digo<\/span><\/span><br \/>\n<\/span><\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># Creamos nuevamente el data.frame df_base<\/span>\r\n<a href=\"http:\/\/inside-r.org\/r-doc\/base\/set.seed\"><span style=\"color: #003399;font-weight: bold\">set.seed<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">5<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <span style=\"color: #000000;font-weight: bold\">LETTERS<\/span><span style=\"color: #009900\">[<\/span><span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">6<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> \r\n    <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Len = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># que pasa si usamos la funcion %in%?  Pues se nos devuelven los valores<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># que queremos pero en el orden original, osea C,D<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum %in% df_modificatorio$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># utilizar %in% para realizar la asignaci\u00f3n:<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum %in% df_modificatorio$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> &lt;- \r\n          df_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Presentar df_base, se puede ver el error que involucra usar %in% pues en<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># lugar de asignar 88 al C y 99 al E, hizo lo contrario<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  99  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  88   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Paso a Paso la operacion anterior: Filtrar los alumnos de df_base que<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># estan en df_modificatorio<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum %in% df_modificatorio$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  99  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  88   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Paso a Paso la operacion anterior: Filtrar los alumnos de df_base que<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># estan en df_modificatorio mostrando s\u00f3lo los valores de la variable<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># 'Mat'<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base$Alum %in% df_modificatorio$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## [1] 99 88<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Paso a Paso la operacion anterior: Filtrar los alumnos de<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># df_modificatorio que estan en df_base mostrando s\u00f3lo los valores de la<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># variable 'Mat'<\/span>\r\ndf_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## [1] 99 88<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Se puede ver entonces, el porque el uso de %in% nos lleva a cometer<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># errores.\r\n<\/span><\/pre>\n<\/div>\n<\/div>\n<h2 style=\"font-size: 1.8em\">Solucion parcial: funci\u00f3n<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code><\/h2>\n<p>En este caso nos sirve bien la funci\u00f3n<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code>, en resumen la funcion<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code><span class=\"Apple-converted-space\">\u00a0<\/span>devuelve los valores<span class=\"Apple-converted-space\">\u00a0<\/span><em>en orden<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>que contienen cada uno de los valores buscados; esta funci\u00f3n tiene otras restricciones que se comentar\u00e1n luego<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># Creamos nuevamente el data.frame df_base<\/span>\r\n<a href=\"http:\/\/inside-r.org\/r-doc\/base\/set.seed\"><span style=\"color: #003399;font-weight: bold\">set.seed<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">5<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <span style=\"color: #000000;font-weight: bold\">LETTERS<\/span><span style=\"color: #009900\">[<\/span><span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">6<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> \r\n    <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Len = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># filtrar usando de la funci\u00f3n match(), n\u00f3tese respeta el orden original<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># del data.frame baseicamente, se le est\u00e1 diciendo buscame los valores del<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># df_modificatorio variable Alum en la tabla df_base variable Alum se hace<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># df_modificatorio[ df_modificatorio$Alum %in% df_base$Alum, 'Alum' ]) en<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># lugar de df_modificatorio$Alum para asegurar que s\u00f3lo se tome en cuenta<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># los valores de df_modificatorio$Alum tiene algun valor que no esta en<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># df_base$Alum<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span><a href=\"http:\/\/inside-r.org\/r-doc\/base\/match\"><span style=\"color: #003399;font-weight: bold\">match<\/span><\/a><span style=\"color: #009900\">(<\/span>x = df_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> \r\n    <span style=\"color: #0000ff\">\"Alum\"<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/table\"><span style=\"color: #003399;font-weight: bold\">table<\/span><\/a> = df_base$Alum<span style=\"color: #339933\">,<\/span> nomatch = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># utilizar match para realizar la asignaci\u00f3n, la parte izquierda de la<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># asignacion (&lt;-) se utiliza match pues queremos los elementos de df_base<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># en el orden de df_modifcatorio mientras que para la parte derecha de la<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># asignacion (&lt;-) se utiliza %in% pues queremos conservar el orden de<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># df_modifcatorio<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span><a href=\"http:\/\/inside-r.org\/r-doc\/base\/match\"><span style=\"color: #003399;font-weight: bold\">match<\/span><\/a><span style=\"color: #009900\">(<\/span>x = df_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> \r\n    <span style=\"color: #0000ff\">\"Alum\"<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/table\"><span style=\"color: #003399;font-weight: bold\">table<\/span><\/a> = df_base$Alum<span style=\"color: #339933\">,<\/span> nomatch = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> &lt;- \r\ndf_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% \r\n    df_base$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame con valores modificados<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  88  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  99   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5\r\n\r\n<\/span><\/pre>\n<\/div>\n<\/div>\n<p><strong>Problemas\/Limitaciones de la funci\u00f3n<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code>.-<\/strong><\/p>\n<p>Los principales problemas son:<\/p>\n<ul>\n<li><em>Identificadores no repetidos.-<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>La funci\u00f3n<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code><span class=\"Apple-converted-space\">\u00a0<\/span>es util cuando se tienen identificadores \u00fanicos (en el ejemplo, los alumnos), pero cuando estos elementos no son \u00fanicos no se debe usar match pues esta funci\u00f3n devuelve el \u00edndice del primer elemento coincidente, por lo tanto s\u00f3lo reemplazar\u00e1 al primer elemento coincidente del data.frame dejando a los demas sin actualizar el valor.<\/li>\n<\/ul>\n<ul>\n<li><em>S\u00f3lo filtra para una variable.-<\/em><span class=\"Apple-converted-space\">\u00a0<\/span>No es posible enviar m\u00e1s de una variable a la funci\u00f3n<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">match<\/code>, es decir, si por ejemplo deseamos filtrar los Alumnos por dos variables, por ejemplo Codigo y Mes, entonces la funci\u00f3n match nos devolver\u00eda un error<\/li>\n<\/ul>\n<p><span class=\"Apple-style-span\" style=\"border-collapse: separate;color: #000000;font-family: sans-serif;font-size: 12px;font-style: normal;font-variant: normal;font-weight: normal;letter-spacing: normal;line-height: normal;text-align: -webkit-auto;text-indent: 0px;background-color: #ffffff\">Se ilustra el primer punto<\/span> a continuaci\u00f3n<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># Creamos nuevamente el data.frame df_base<\/span>\r\n<a href=\"http:\/\/inside-r.org\/r-doc\/base\/set.seed\"><span style=\"color: #003399;font-weight: bold\">set.seed<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">5<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <span style=\"color: #000000;font-weight: bold\">LETTERS<\/span><span style=\"color: #009900\">[<\/span><span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">6<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> \r\n    <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Len = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span>:<span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> \r\n    stringsAsFactors = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># aumentaremos una fila con Alum repetido para ilustrar el error<\/span>\r\ndf_base &lt;- <a href=\"http:\/\/inside-r.org\/r-doc\/base\/rbind\"><span style=\"color: #003399;font-weight: bold\">rbind<\/span><\/a><span style=\"color: #009900\">(<\/span>df_base<span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #0000ff\">\"E\"<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #cc66cc\">1<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #cc66cc\">1<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 7    E   1   1<\/span>\r\n\u00a0\r\n<span style=\"color: #666666;font-style: italic\"># actualizar valores<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span><a href=\"http:\/\/inside-r.org\/r-doc\/base\/match\"><span style=\"color: #003399;font-weight: bold\">match<\/span><\/a><span style=\"color: #009900\">(<\/span>x = df_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> \r\n    <span style=\"color: #0000ff\">\"Alum\"<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/table\"><span style=\"color: #003399;font-weight: bold\">table<\/span><\/a> = df_base$Alum<span style=\"color: #339933\">,<\/span> nomatch = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> &lt;- \r\n                   df_modificatorio<span style=\"color: #009900\">[<\/span>df_modificatorio$Alum %in% df_base$Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame con valores modificados<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  88  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  99   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 7    E   1   1<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># ERROR: Se puede ver que s\u00f3lo al primer 'E' se le actualiz\u00f3 el valor<\/span><\/pre>\n<\/div>\n<\/div>\n<p>Para evitar este error modificaremos nuestra forma de asignar de la siguiente manera:<\/p>\n<ul>\n<li>En la parte izquierda de la asignaci\u00f3n se va a realizar el filtro usando %in% (en<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">df_base<\/code>), recuerde que esto implica que se mantendr\u00e1 el orden del data.frame cuyos valores van a ser modificados<\/li>\n<li>Ahora se debe filtrar el data.frame que contiene los nuevos valores siguiendo el orden del otro data.frame, para ello usamos match()<\/li>\n<\/ul>\n<p>De la siguiente manera:<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\">\n<pre class=\"r geshifilter-R\" style=\"font-family: monospace\"><span style=\"color: #666666;font-style: italic\"># Creamos nuevamente el data.frame df_base<\/span>\r\n<a href=\"http:\/\/inside-r.org\/r-doc\/base\/set.seed\"><span style=\"color: #003399;font-weight: bold\">set.seed<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #cc66cc\">5<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base <span>&lt;-<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/data.frame\"><span style=\"color: #003399;font-weight: bold\">data.frame<\/span><\/a><span style=\"color: #009900\">(<\/span>Alum = <span style=\"color: #000000;font-weight: bold\">LETTERS<\/span><span style=\"color: #009900\">[<\/span><span style=\"color: #cc66cc\">1<\/span><span>:<\/span><span style=\"color: #cc66cc\">6<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> Mat = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span><span>:<\/span><span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> \r\n    <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> Len = <a href=\"http:\/\/inside-r.org\/r-doc\/base\/sample\"><span style=\"color: #003399;font-weight: bold\">sample<\/span><\/a><span style=\"color: #009900\">(<\/span>x = <span style=\"color: #cc66cc\">1<\/span><span>:<\/span><span style=\"color: #cc66cc\">10<\/span><span style=\"color: #339933\">,<\/span> size = <span style=\"color: #cc66cc\">6<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/replace\"><span style=\"color: #003399;font-weight: bold\">replace<\/span><\/a> = <span style=\"color: #000000;font-weight: bold\">TRUE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> \r\n    stringsAsFactors = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># aumentaremos una fila con Alum repetido para ilustrar el error<\/span>\r\ndf_base <span>&lt;-<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/rbind\"><span style=\"color: #003399;font-weight: bold\">rbind<\/span><\/a><span style=\"color: #009900\">(<\/span>df_base<span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/c\"><span style=\"color: #003399;font-weight: bold\">c<\/span><\/a><span style=\"color: #009900\">(<\/span><span style=\"color: #0000ff\">\"E\"<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #cc66cc\">1<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #cc66cc\">1<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 7    E   1   1<\/span>\r\n\u00a0\r\n<span style=\"color: #666666;font-style: italic\"># se ilustra el filtro a usar en la parte izquierda de la asignaci\u00f3n<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base<span>$<\/span>Alum <span>%in%<\/span> df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  10  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E   2   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 7    E   1   1<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># se ilustra el filtro a usar en la parte derecha de la asignaci\u00f3n<\/span>\r\ndf_modificatorio<span style=\"color: #009900\">[<\/span><a href=\"http:\/\/inside-r.org\/r-doc\/base\/match\"><span style=\"color: #003399;font-weight: bold\">match<\/span><\/a><span style=\"color: #009900\">(<\/span>x = df_base<span style=\"color: #009900\">[<\/span>df_base<span>$<\/span>Alum <span>%in%<\/span> df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> \r\n                 <span style=\"color: #0000ff\">\"Alum\"<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> <a href=\"http:\/\/inside-r.org\/r-doc\/base\/table\"><span style=\"color: #003399;font-weight: bold\">table<\/span><\/a> = df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> nomatch = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\">##     Alum Mat<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2      C  88<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1      E  99<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1.1    E  99<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># asignar usando %in% y match()<\/span>\r\ndf_base<span style=\"color: #009900\">[<\/span>df_base<span>$<\/span>Alum <span>%in%<\/span> df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span> <span>&lt;-<\/span> \r\n     df_modificatorio<span style=\"color: #009900\">[<\/span><a href=\"http:\/\/inside-r.org\/r-doc\/base\/match\"><span style=\"color: #003399;font-weight: bold\">match<\/span><\/a><span style=\"color: #009900\">(<\/span>x = df_base<span style=\"color: #009900\">[<\/span>df_base<span>$<\/span>Alum <span>%in%<\/span> df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Alum\"<\/span><span style=\"color: #009900\">]<\/span><span style=\"color: #339933\">,<\/span> \r\n                            <a href=\"http:\/\/inside-r.org\/r-doc\/base\/table\"><span style=\"color: #003399;font-weight: bold\">table<\/span><\/a> = df_modificatorio<span>$<\/span>Alum<span style=\"color: #339933\">,<\/span> nomatch = <span style=\"color: #000000;font-weight: bold\">FALSE<\/span><span style=\"color: #009900\">)\r\n                      <\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #0000ff\">\"Mat\"<\/span><span style=\"color: #009900\">]<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># presentar data.frame con valores modificados<\/span>\r\ndf_base\r\n<span style=\"color: #666666;font-style: italic\">##   Alum Mat Len<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 1    A   3   6<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 2    B   7   9<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 3    C  88  10<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 4    D   3   2<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 5    E  99   3<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 6    F   8   5<\/span>\r\n<span style=\"color: #666666;font-style: italic\">## 7    E  99   1<\/span>\r\n<span style=\"color: #666666;font-style: italic\"># Se puede ver como los dos 'E' han sido acrtualizados<\/span><\/pre>\n<\/div>\n<\/div>\n<p>Para el segundo punto (imposibilidad de utilizar varias variables como filtro) usaremos el comando<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">merge<\/code><\/p>\n<h2 style=\"font-size: 1.8em\">Soluci\u00f3n general utilizando<span class=\"Apple-converted-space\">\u00a0<\/span><code style=\"font-family: 'Lucida Console', Consolas, 'DejaVu Sans Mono', 'Droid Sans Mono', Monaco, monospace\">merge<\/code><span class=\"Apple-converted-space\">\u00a0<\/span>(ie. join, buscarv, lookup)<\/h2>\n<p>En la segunda parte de esta entrada se explica este punto =).<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Escribo este post como respuesta a una pregunta de un colega y adem\u00e1s porque sirve muy bien como ejemplo para entender un poco m\u00e1s del indexado de R.<\/p>\n<p> Problema <\/p>\n<p>Supongamos que tenemos las calificaciones de un curso en un data.frame, algo as\u00ed como:<\/p>\n<div style=\"overflow: auto\">\n<div class=\"geshifilter\"> # Declarar una semilla para reproducibilidad del &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/03\/diferencias-entre-in-y-match-o-del-como-hacer-una-actualizacion-condicional-de-valores-dentro-de-un-data-frame-utilizando-valores-de-otro-data-frame-parte-1\/\">Seguir leyendo<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"author":3803,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1688,1534],"tags":[1171599,1171603,1171604,1171602,356627,1171601,1171600,42704,1171627,356628],"class_list":["post-440","post","type-post","status-publish","format-standard","hentry","category-estadistica","category-r","tag-in","tag-actualizacion-condicional-de-valores-de-un-data-frame","tag-actualizar-data-frame-utilizando-como-referencia-otro-data-frame","tag-actualizar-valores-de-un-data-frame","tag-buscarv","tag-lookup","tag-match","tag-merge","tag-r","tag-vlookup","item-wrap"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/users\/3803"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/comments?post=440"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"predecessor-version":[{"id":448,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/440\/revisions\/448"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}