R中一个变量与所有其他变量的相关性

7gyucuyw  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(129)

我想计算因变量y和所有x之间的相关性。我使用下面的代码,

cor(loan_data_10v[sapply(loan_data_10v, is.numeric)],use="complete.obs")

结果是相关矩阵。我怎么能只得到一列变量y。

5us2dqdw

5us2dqdw1#

如果我们在'x'和'y'之间寻找cor,两个参数都可以是vectormatrix。使用一个可重复的例子,比如mtcars,假设'y'是'mpg','x'是其他变量('mpg'是第一列,所以我们使用mtcars[-1]来表示'x')

cor(mtcars[-1], mtcars$mpg) 
#          [,1]
#cyl  -0.8521620
#disp -0.8475514
#hp   -0.7761684
#drat  0.6811719
#wt   -0.8676594
#qsec  0.4186840
#vs    0.6640389
#am    0.5998324
#gear  0.4802848
#carb -0.5509251

如果我们有numeric/non-numeric列,则创建numeric列的索引('i1 '),使用此索引获取'x'和'y'变量的names,并应用cor

i1 <- sapply(loan_data_10v, is.numeric)
y1 <- "dep_column" #change it to actual column name
x1 <- setdiff(names(loan_data_10v)[i1], y1)
cor(loan_data_10v[x1], loan_data_10v[[y1]])
j2cgzkjk

j2cgzkjk2#

另一个选项是corrr包,您可以轻松地指定您想要focus的变量,并返回data.frame

library(tidyverse)
library(corrr)
mtcars %>% 
  correlate() %>% 
  focus(mpg) 
# Correlation computed with
# • Method: 'pearson'
# • Missing treated using: 'pairwise.complete.obs'
# # A tibble: 10 × 2
#    term     mpg
#    <chr>  <dbl>
#  1 cyl   -0.852
#  2 disp  -0.848
#  3 hp    -0.776
#  4 drat   0.681
#  5 wt    -0.868
#  6 qsec   0.419
#  7 vs     0.664
#  8 am     0.600
#  9 gear   0.480
# 10 carb  -0.551

如果你想先删除其他非数值变量,它也很有用,例如:

iris %>% 
  select_if(~!is.factor(.)) %>% 
  correlate() %>% 
  focus(Petal.Width)
# Correlation computed with
# • Method: 'pearson'
# • Missing treated using: 'pairwise.complete.obs'
# # A tibble: 3 × 2
#   term         Petal.Width
#   <chr>              <dbl>
# 1 Sepal.Length       0.818
# 2 Sepal.Width       -0.366
# 3 Petal.Length       0.963

相关问题