Calcula la correlación para dos marcos de datos en todas las columnas después de group_by en R.
Datos de muestra:
A <- data.frame(region = c("US","US", "UK","UK","AUS","AUS"), a = c(1,2,3,4,5,8), b = c(4,5,6,7,8,2), c = c(9,6,5,43,2,5))
B <- data.frame(region = c("US","US", "UK","UK","AUS","AUS"),a = c(7,4,3,6,9,81), b = c(9,4,3,7,0,35), c = c(22,5,6,2,9,33))
Resultado esperado:
(x es la correlación para la columna entre dos data frames en la región)
He intentado:
Unir los dos data frames en uno solo y calcular la correlación entre dos columnas en un data frame. Es un poco tedioso escribir todos los nombres de las columnas, lo cual también crea demasiadas columnas. ¿Hay alguna forma más sencilla de hacer esto?
davy.ai
Hay una forma más sencilla de calcular la correlación entre columnas en dos data frames utilizando el paquete
dplyr
. Aquí te explico cómo hacerlo:bind_rows
dedplyr
.group_by
ysummarise
para calcular la correlación entre columnas para cada región. Aquí, podemos utilizar la funcióncor
para calcular la correlación entre las columnasa
,b
yc
en cada región.El resultado será:
Aquí,
a_cor
,b_cor
yc_cor
son las correlaciones entre las columnasa
,b
yc
, respectivamente, para cada región.Ten en cuenta que si hay valores faltantes (
NA
) en los datos, la funcióncor
devolveráNA
. Si deseas excluir los valores faltantes, puedes utilizar el argumentouse
en la funcióncor
. Por ejemplo:Esto calculará la correlación solo para los pares de observaciones que tienen datos completos.