繁体   English   中英

r中矩阵格式数据的相关性

[英]correlation for data in matrix format in r

我在 R 中创建了一个矩阵,我想研究两列之间的相关性。 My_matrix 是:

         speed motor rpm acceleration age
cadillac     3        42           67  22
porche       5        40           68  21
ferrari      7        37           69  20
peugeot     10        32           70  19
kia         12        28           71  18

当我尝试cor(speed~age, data=My_matrix) ,出现以下错误:

cor(speed ~ age, data = a) 中的错误:未使用的参数(数据 = My_matrix)

知道如何解决这个问题吗? 谢谢。

我们可以子集的列和应用cor直接作为的使用cor

cor(x, y = NULL, use = "everything", method = c("pearson", "kendall", "spearman"))

并且没有公式方法

cor(My_matrix[,c("speed", "age")])
#          speed        age
#speed  1.0000000 -0.9971765
#age   -0.9971765  1.0000000

我也试过了,它奏效了:我创建了一个“b”数据集

b=as.data.frame(My_matrix)

然后我使用了

cor(b$speed, b$age) 并得到相关性。

这里已经有一些很棒的基础 R 解决方案(向@akrun 和 @Debutant 致敬,基础 R 很棒!)。 我想为未来的查看者和代码偏好选项添加替代解决方案。

如果您不喜欢键入引号并且数据集足够小,列号可以更快——尽管引号中的变量名更准确(尤其是在列重新排序的情况下)。

评论中的@mikey 提供了一个列号解决方案,这是一个替代版本:

cor(My_matrix[,c(1,4)])

如果您的数据是数据框而不是矩阵,您可能会喜欢一种 tidyverse 方法,它也不需要引号(尽管名称中带有空格的讨厌的变量可能需要 ` 标记):

library(dplyr)
My_dataframe %>% select(speed, age) %>% cor()

@Debutant 只要求 2 个变量的相关性,但如果我们想全力以赴并获得完整的相关矩阵,这里有其他选项:

# assuming all your columns are numeric as they are here
cor(My_matrix)
# if you have a dataframe with different data types, select only the numeric ones
library(dplyr)
My_dataframe %>% select_if(is.numeric) %>% cor()
# if you don't like the long decimals, toss in a round() for good measure
My_dataframe %>% select_if(is.numeric) %>% cor() %>% round(3)

希望您觉得这个有帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM