【发布时间】:2013-12-06 06:32:06
【问题描述】:
我想将一个变量(比如酪氨酸)与 R 上的所有其他变量(大约 200 种其他代谢物,如尿素、葡萄糖、肌苷等)关联起来,但我不知道该怎么做。我是 R 新手。
我已经学会了配对功能,但是它将指定范围内的每个代谢物配对。
谢谢!
【问题讨论】:
标签: r variables correlation
我想将一个变量(比如酪氨酸)与 R 上的所有其他变量(大约 200 种其他代谢物,如尿素、葡萄糖、肌苷等)关联起来,但我不知道该怎么做。我是 R 新手。
我已经学会了配对功能,但是它将指定范围内的每个代谢物配对。
谢谢!
【问题讨论】:
标签: r variables correlation
由于您提到“代谢物”,我假设您的指标是“浓度”,例如你有一个矩阵,称之为data,每个代谢物有一列,每个样品有一列。
所以,是这样的:
# just generates example - YOU SHOULD PROVIDE THIS!!!
data <- data.frame(tyrosine=1:10 + rnorm(10,sd=2),
urea =2*1:10 + rnorm(10,sd=2),
glucose =30 -2*1:10 +rnorm(10,sd=2),
inosine =25 -1:10 + rnorm(10,sd=2))
data
tyrosine urea glucose inosine
1 -0.2529076 5.023562 29.83795 26.71736
2 2.3672866 4.779686 27.56427 22.79442
3 1.3287428 4.757519 24.14913 22.77534
4 7.1905616 3.570600 18.02130 20.89239
5 5.6590155 12.249862 21.23965 17.24588
6 4.3590632 11.910133 17.88774 18.17001
7 7.9748581 13.967619 15.68841 17.21142
8 9.4766494 17.887672 11.05850 16.88137
9 10.1515627 19.642442 11.04370 18.20005
10 9.3892232 21.187803 10.83588 16.52635
要获取相关系数,只需键入:
cor(data)
tyrosine urea glucose inosine
tyrosine 1.0000000 0.8087897 -0.9545523 -0.8512938
urea 0.8087897 1.0000000 -0.8577782 -0.8086910
glucose -0.9545523 -0.8577782 1.0000000 0.8608000
inosine -0.8512938 -0.8086910 0.8608000 1.0000000
要生成散点图矩阵,只需键入:
pairs(data)
以后,请提供一个可以导入 R 的数据示例。
【讨论】:
cor(data$tyrosine,data) 做到了。
numeric_column_names<- c("col1", "col2") 然后运行 cor(data$tyrosine, data[numeric_column_names])
在以下示例中,我只是将包含所有变量的数据框拆分为两个矩阵。这些可以输入到cor函数中来获取你的相关值:
set.seed(1)
n=20
df <- data.frame(tyrosine=runif(n), urea=runif(n), glucose=runif(n), inosine=runif(n))
df
COR <- cor(as.matrix(df[,1]), as.matrix(df[,-1]))
COR
# urea glucose inosine
#[1,] -0.2373854 -0.3672984 -0.3393602
【讨论】:
类似于 Marc 在框中使用的应用和列名
> set.seed(1)
> n=20
> df <- data.frame(tyrosine=runif(n), urea=runif(n), glucose=runif(n),
inosine=runif(n))
> apply(df,2, function(col)cor(col, df$tyrosine))
tyrosine urea glucose inosine
1.0000000 -0.2373854 -0.3672984 -0.3393602
这是一个很好的问题,也是了解合理大小数据的模式,因为如果您只希望酪氨酸 cors(OP 专门要求的)只计算酪氨酸 cors(n 时间 + 空间),而不是全部与全部,它是有效的(~n^2 时间 + 空间)。
【讨论】: