R es un lenguaje de programación y un entorno de software que se utiliza principalmente para gráficos y computación estadística. Proporciona una amplia gama de herramientas para manipulación de datos, análisis de datos, visualización de datos y modelado estadístico.
Fusionar datos es una tarea en el análisis y manipulación de datos. En R hay varias formas de fusionar marcos de datos, utilizando el 'unir()' función desde la base R, usando el 'dplyr' paquete, y el 'tabla de datos' paquete. En este tutorial, usaremos las tres formas anteriores para fusionar datos usando R.
1. Usando 'merge()' desde la base R:
La función merge() en base R nos ayuda a combinar dos o más marcos de datos basados en columnas comunes. Realiza varios tipos de uniones, como unión interna, unión izquierda, unión derecha y unión completa.
Sintaxis:
merged_df <- merge(x,y,by = 'common_column',..)>
- 'X' y ‘y’ son los marcos de datos que desea fusionar.
- 'por' especifica las columnas comunes en las que se realizará la combinación.
- Argumentos adicionales como 'todos.x' , all.y’ y 'todo' controlar el tipo de unión que se va a realizar.
Ejemplo:
Considere dos marcos de datos 'df1' y 'df2'
R
df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))> |
>
>
Veamos ejemplos de cómo realizar varios tipos de uniones usando la función 'merge()':
1. Unión interna (comportamiento predeterminado):
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000>
El marco de datos resultante 'inner_join' solo incluirá las filas comunes donde 'IDENTIFICACIÓN' está presente en tanto 'df1' como 'df2'.
2. Unión izquierda ( 'todo.x = VERDADERO' ):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
ordenar cubos
>
Producción:
ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000>
El marco de datos resultante 'left_join' incluirá todas las filas de 'df1' y las filas coincidentes de 'df2'. Las filas que no coincidan de 'df2' tendrán un valor 'NA'
3. Únete a la derecha ( 'todo.y=VERDADERO' ):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Producción:
comandos de git para empujar
ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000 4 5 NA Lawyer 7000>
El marco de datos resultante 'right_join' incluirá todas las filas de 'df2' y las filas coincidentes de 'df1'. Las filas que no coincidan de 'df1' tendrán valores 'NA'.
4. Unión externa completa ( 'todo = VERDADERO' )
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000 5 5 NA Lawyer 7000>
El marco de datos resultante 'full_join' incluirá todas las filas tanto de 'df1' como de 'df2'. Los valores que no coincidan tendrán valores 'NA'.
2. Usando el paquete 'dplyr':
El paquete 'dplyr' proporciona un conjunto de funciones para la manipulación de datos, incluida la fusión de marcos de datos.
La función principal para fusionar en 'dplyr' es 'unirse()', que admite varios tipos de uniones.
Sintaxis:
merged_df<- join(x,y,by='common_column',type='type_of_join')>
- 'X' y ‘y’ son los marcos de datos que se fusionarán.
- 'por' especifica las columnas comunes en las que se realizará la combinación
- 'tipo_de_unión' puede ser 'interno', 'izquierdo', 'derecho' o 'completo' para especificar el tipo de unión.
Ejemplo:
Instala el dplyr() empaquetar y crear dos marcos de datos, 'df1' y 'df2'.
R
library>(dplyr)> df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(20, 30, 40, 50))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(2000, 4000, 6000, 7000))> |
>
>
Veamos ejemplos de cómo realizar varios tipos de uniones usando las funciones 'dplyr':
1. Unir internamente:
mehta shloka
R
inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
El marco de datos resultante 'inner_join' solo incluirá el filas comunes donde 'ID' está presente tanto en 'df1' como en 'df2'.
2. Unión izquierda:
R
left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>
El marco de datos resultante 'left_join' incluirá todas las filas desde 'df1' y el filas coincidentes de 'df2' . Las filas que no coincidan de 'df2' tendrán valores 'NA'.
3. Unirse a la derecha:
R
right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>
El marco de datos resultante 'right_join' incluirá todas las filas de 'df2' y el filas coincidentes de 'df1'. Las filas que no coincidan de 'df1' tendrán valores 'NA'.
4. Unión exterior completa:
R
full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>
El marco de datos resultante 'full_join' incluirá todas las filas de 'df1' y 'df2' . Las filas que no coincidan tendrán valores 'NA'.
3. Usando el paquete 'data.table':
El paquete 'data.table' ofrece un enfoque rápido y eficiente para la manipulación de datos. Proporciona la función 'merge()'. Es similar al de la base R pero optimizado para la velocidad.
Sintaxis:
merged_dt <- merge(x, y, by = 'common_column', ...)>
- 'X' y ‘y’ son los marcos de datos que se van a fusionar.
- 'por' especifica las columnas comunes en las que se realizará la combinación.
- Argumentos adicionales como ‘all.x’, ‘all.y’ y 'todo' que controla el tipo de unión.
Ejemplo:
Instale la biblioteca data.table y cree dos tablas de datos, 'dt1' y 'dt2'.
R
library>(data.table)> dt1 <->data.table>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> dt2 <->data.table>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))> |
>
>
Veamos ejemplos de cómo realizar varios tipos de fusiones usando la función 'merge()' del paquete 'data.table':
1. Unión interna (comportamiento predeterminado):
tff
R
inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>
El marco de datos resultante 'inner_join' solo incluirá el filas comunes donde 'ID' está presente tanto en 'df1' como en 'df2'.
2. Unión izquierda ('all.x = VERDADERO'):
R
left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>
El marco de datos resultante 'left_join' incluirá todo No coincidente de 'df1' y el filas coincidentes de 'df2'. Las filas que no coincidan de 'df2' tendrán valores 'NA'.
3. Unión derecha ('all.y = VERDADERO'):
R
right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)> |
>
>
Producción:
ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>
El marco de datos resultante 'right_join' incluirá todo No coincidente filas de 'df2' y las filas coincidentes de 'df1'. Las filas que no coincidan de 'df1' tendrán valores 'NA'.
3. Unión externa completa ('todos = VERDADERO'):
R
full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)> |
Error de tiempo de ejecución
>
>
Producción:
ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>
El marco de datos resultante 'full_join' incluirá todo No coincidente filas de 'df1' y 'df2'. Las filas que no coincidan tendrán valores 'NA'.
Una de las ventajas de utilizar 'dplyr' y 'data.table' es que proporcionan una sintaxis más concisa y legible para la manipulación de datos en comparación con la base R.
Resumen:
- 'merge()' proporciona una función de propósito general para fusionar marcos de datos.
- 'dplyr' se centra en fusionarse con un enfoque en la legibilidad y la facilidad de uso.
- 'datos. table' proporciona una manera rápida y eficiente de manejar grandes conjuntos de datos con un rendimiento optimizado.
- Debemos elegir el enfoque en función de la complejidad de la tarea y los requisitos de ejecución.