创建 table 显示各种变量与另一个序列的排序绝对相关性
Create table showing the sorted absolute correlation of various variables with another series
我希望输出显示每个 X 变量的名称、它与另一个序列的符号相关性及其绝对相关性,按绝对相关性降序排列。
使用以下代码,我能够计算出序列(对象 res1
)和 X 变量(位于 data2
数据帧内)之间的相关性。
cor(data2, res1, method = c("pearson"))
以上代码生成了以下在控制台中垂直显示的输出。
[,1]
x1 0.45683210
x2 0.62858863
x3 0.08457911
x4 0.41022052
接下来,使用以下代码,我能够使用 sort() 函数按绝对值对这些相关性进行排序。
abs(cor(data2, res1, method = c("pearson")))
abs1<-abs(cor(data2, res1, method = c("pearson")))
sort(abs1, decreasing = TRUE)
而且,我得到了以下输出。
[1] 0.62858863 0.45683210 0.41022052 0.08457911
我想生成一个看起来像 table 或数据框的输出。
在第一列中,您将看到 X 变量的标签。
在第二列中,您将获得它们的绝对相关性。
在第三列中,您将获得实际相关性。
并且,此垂直表格列表将按降序排列。我想我有我需要的所有信息。我只需要代码来生成指定的输出。
我想我理解你的问题,但我不是 100% 确定。
我从一些示例数据开始。我凭眼睛知道 x1 和 x2 不太合适,x3 非常合适,x4 几乎一样好。
res1 <- c(0, 5, 2, 7, 1)
data2 <- data.frame(x1 = 1:5, # uncorrelated
x2 = 14:10, # uncorrelated and wrong direction
x3 = c(0, 5, 1, 6, 0), # very similar
x4 = c(0, 0, 2, 7, 1)) # somewhat similar
我的回答依赖于dplyr
,不是最简洁的,但应该很清楚。
library(dplyr)
cor(data2, res1, method = "pearson") %>%
tibble::as.tibble(rownames = "X_var") %>% # Edit: using suggestion in comment, was
# as.data.frame() %>% tibble::rownames_to_column(varrownames = "X_var") %>%
convert row names into a new column "X_var"
mutate(abs_cor = abs(V1)) %>% # add absolute correlation
arrange(-abs_cor) %>% # sort by descending abs correlation
select(X_var, abs_cor, cor = V1) # display in order and rename V1
输出
X_var abs_cor cor
1 x3 0.9822125 0.9822125
2 x4 0.7058824 0.7058824
3 x1 0.2169305 0.2169305
4 x2 0.2169305 -0.2169305
@Jon Spring 的回答非常完美。这是 base R
中的相同代码
res1 <- c(0, 5, 2, 7, 1)
data2 <- data.frame(x1 = 1:5, # uncorrelated
x2 = 14:10, # uncorrelated and wrong direction
x3 = c(0, 5, 1, 6, 0), # very similar
x4 = c(0, 0, 2, 7, 1)) # somewhat similar
correlation = cor(data2, res1, method = "pearson")
names = rownames(correlation)
abs_cor = abs(correlation)
data = data.frame(X_var = names,abs_cor = abs_cor,cor = correlation)
data[order(data$abs_cor,decreasing = TRUE),]
Sada93 的回答,如上图很棒。我现在已经多次使用这组代码并且它们运行良好。但是,我发现他使用 order() 函数按降序对绝对相关性进行排序的最后一行代码可以通过使用 R Studio 中的查看器并通过单击 abs(相关性)上方的降序排序来简单地替换柱子。
我希望输出显示每个 X 变量的名称、它与另一个序列的符号相关性及其绝对相关性,按绝对相关性降序排列。
使用以下代码,我能够计算出序列(对象 res1
)和 X 变量(位于 data2
数据帧内)之间的相关性。
cor(data2, res1, method = c("pearson"))
以上代码生成了以下在控制台中垂直显示的输出。
[,1]
x1 0.45683210
x2 0.62858863
x3 0.08457911
x4 0.41022052
接下来,使用以下代码,我能够使用 sort() 函数按绝对值对这些相关性进行排序。
abs(cor(data2, res1, method = c("pearson")))
abs1<-abs(cor(data2, res1, method = c("pearson")))
sort(abs1, decreasing = TRUE)
而且,我得到了以下输出。
[1] 0.62858863 0.45683210 0.41022052 0.08457911
我想生成一个看起来像 table 或数据框的输出。
在第一列中,您将看到 X 变量的标签。
在第二列中,您将获得它们的绝对相关性。
在第三列中,您将获得实际相关性。
并且,此垂直表格列表将按降序排列。我想我有我需要的所有信息。我只需要代码来生成指定的输出。
我想我理解你的问题,但我不是 100% 确定。
我从一些示例数据开始。我凭眼睛知道 x1 和 x2 不太合适,x3 非常合适,x4 几乎一样好。
res1 <- c(0, 5, 2, 7, 1)
data2 <- data.frame(x1 = 1:5, # uncorrelated
x2 = 14:10, # uncorrelated and wrong direction
x3 = c(0, 5, 1, 6, 0), # very similar
x4 = c(0, 0, 2, 7, 1)) # somewhat similar
我的回答依赖于dplyr
,不是最简洁的,但应该很清楚。
library(dplyr)
cor(data2, res1, method = "pearson") %>%
tibble::as.tibble(rownames = "X_var") %>% # Edit: using suggestion in comment, was
# as.data.frame() %>% tibble::rownames_to_column(varrownames = "X_var") %>%
convert row names into a new column "X_var"
mutate(abs_cor = abs(V1)) %>% # add absolute correlation
arrange(-abs_cor) %>% # sort by descending abs correlation
select(X_var, abs_cor, cor = V1) # display in order and rename V1
输出
X_var abs_cor cor
1 x3 0.9822125 0.9822125
2 x4 0.7058824 0.7058824
3 x1 0.2169305 0.2169305
4 x2 0.2169305 -0.2169305
@Jon Spring 的回答非常完美。这是 base R
res1 <- c(0, 5, 2, 7, 1)
data2 <- data.frame(x1 = 1:5, # uncorrelated
x2 = 14:10, # uncorrelated and wrong direction
x3 = c(0, 5, 1, 6, 0), # very similar
x4 = c(0, 0, 2, 7, 1)) # somewhat similar
correlation = cor(data2, res1, method = "pearson")
names = rownames(correlation)
abs_cor = abs(correlation)
data = data.frame(X_var = names,abs_cor = abs_cor,cor = correlation)
data[order(data$abs_cor,decreasing = TRUE),]
Sada93 的回答,如上图很棒。我现在已经多次使用这组代码并且它们运行良好。但是,我发现他使用 order() 函数按降序对绝对相关性进行排序的最后一行代码可以通过使用 R Studio 中的查看器并通过单击 abs(相关性)上方的降序排序来简单地替换柱子。