我想计算因变量y和所有x之间的相关性。我使用下面的代码,
cor(loan_data_10v[sapply(loan_data_10v, is.numeric)],use="complete.obs")
结果是相关矩阵。我怎么能只得到一列变量y。
5us2dqdw1#
如果我们在'x'和'y'之间寻找cor,两个参数都可以是vector或matrix。使用一个可重复的例子,比如mtcars,假设'y'是'mpg','x'是其他变量('mpg'是第一列,所以我们使用mtcars[-1]来表示'x')
cor
vector
matrix
mtcars
mtcars[-1]
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
numeric/non-numeric
numeric
names
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]])
j2cgzkjk2#
另一个选项是corrr包,您可以轻松地指定您想要focus的变量,并返回data.frame:
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
2条答案
按热度按时间5us2dqdw1#
如果我们在'x'和'y'之间寻找
cor
,两个参数都可以是vector
或matrix
。使用一个可重复的例子,比如mtcars
,假设'y'是'mpg','x'是其他变量('mpg'是第一列,所以我们使用mtcars[-1]
来表示'x')如果我们有
numeric/non-numeric
列,则创建numeric
列的索引('i1 '),使用此索引获取'x'和'y'变量的names
,并应用cor
j2cgzkjk2#
另一个选项是corrr包,您可以轻松地指定您想要
focus
的变量,并返回data.frame
:如果你想先删除其他非数值变量,它也很有用,例如: