gpt4 book ai didi

r - 查找列的相关性

转载 作者:行者123 更新时间:2023-12-02 18:25:58 26 4
gpt4 key购买 nike

前言:我是一个渴望学习的 R 初学者。请不要将问题的简单性(如果答案简单)误认为缺乏研究或努力!

我有一个名为 data 的 data.table,其中的列标记为 V1 到 V20。我想获取某些列(1、6、7、9、10 和 11)相对于 V18 的相关性,这样我就有一个如下所示的新表

Variable     Correlation_to_V18
V1 cor(V1,V18)
V6 cor(V6,V18)
V7 cor(V7,V18)
V9 cor(V9,V18)
V10 cor(V10,V18)
V11 cor(V11,V18)

我尝试使用 for 循环但无济于事

column <- c(1,6,7,9,10,11)
for (i in column) {
correlations<-cor(data[,18], data[,as.numeric(i)])
cor_table<- data.table(variables = colnames(data[,as.numeric(column)]), correlation_val = correlations)
return(cor_table)
}

最佳答案

让我们制作一些听起来像您的数据的数据(50 行 x 20 列):

library(dplyr)
library(tidyr)
library(corrr)

set.seed(123)
df1 <- data.frame(matrix(rnorm(1000),
ncol = 20,
nrow = 50,
dimnames = list(c(), paste0("V", 1:20))))

一般来说,在使用 R 时,使用循环处理数据帧是一个坏主意。有 apply 函数、tidyverse 包和其他包可以使数据帧的使用变得更容易。

在这种情况下,我将使用 corrr 库返回具有相关系数的数据帧。然后,您可以过滤感兴趣的术语 V18,将输出从“宽”重新调整为“长”,然后再次过滤其他变量。

correlate(df1) %>% 
filter(term == "V18") %>%
pivot_longer(2:21) %>%
filter(name %in% c("V1", "V6", "V7", "V9", "V10", "V11"))

结果:

# A tibble: 6 x 3
term name value
<chr> <chr> <dbl>
1 V18 V1 0.125
2 V18 V6 -0.167
3 V18 V7 0.345
4 V18 V9 -0.110
5 V18 V10 0.0473
6 V18 V11 -0.0347

关于r - 查找列的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70162499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com