【发布时间】:2022-01-06 18:19:13
【问题描述】:
前言:我是 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)
}
【问题讨论】:
-
我对列 name
Correlation_to_V1感到困惑,暗示(推断?)意味着cor(V6,V18)没有使用V1。此外,不能从for循环中return,不确定您最终希望得到什么。您是否希望基于您的真实data聚合的新框架?如果您提供一个简单/小样本框架,其中包含实际cor值和实际输出,那将非常有帮助;无论您如何创建实际输出,您都可以根据需要在 Excel 中制作 CSV。 -
@r2evans 我已经纠正了一些错误。我试图找到第 1、6、7、9、10 和 11 列相对于第 18 列的相关性,因此命名为 Correlation_to_V18。最后,我想要一个数据表,其中一列列出了我用来计算与 V18 的相关性的变量,另一列列出了相关性值
-
您可以使用 cor(data) 成对得到所有列的相关矩阵,然后选择您需要的并相应地命名它们 cor(data)[c("V1","V6" "V7","V9","V10"),"V18"]。 return 通常用于函数,但在 for 循环中不是必需的。
标签: r dataframe data.table