Re: [问题] 多笔资料运算Pearson相关系数

楼主: andrew43 (讨厌有好心推文后删文者)   2015-06-11 12:21:29
你的想法是可行的。不过我用 apply 改写一下,但意思一样。
# 以下设计一个 data frame 叫 dat,栏数和列数和你的不同,但结构应该相似。
name <- c("a", "b", "c")
mat <- as.data.frame(matrix(rnorm(24), 3))
dat <- cbind(name, mat)
# 利用 apply 逐列算出相关系数,存成 cor.pearson
cor.pearson <- apply(dat[, -1], 1, function(x){
cor(x[1:4], x[5:8]) # 1:4 5:8 你要改成1:30 31:60
#(如果 X 和 Y 排列像你的例子一模一样的话)
})
# 建立一个 data frame 方便读取结果
data.frame(name = dat$name, cor.pearson)
※ 引述《Shadowy (+ing)》之铭言:
: [问题类型]:
:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
:
: 新手(没写过程式,R 是我的第一次)
:
: [问题叙述]:
:
: 各位先进好:
: 我有50万笔资料,每一笔资料有30组(X,Y)的数据,
: 想要针对每一笔的X,Y运算Pearson相关系数,
: 资料格式,如下:
: Name X1 X2 ... X30 Y1 Y2 ... Y30
: .
: .
: .
: .
: 共50万笔
: 欲输出格式为:
: (Name) (Pearson's cor)
: 因为没有太多的程式撰写经验,
: 目前的想法是:
: 先抓取每一列1~30个值为X向量,31~60个值为Y向量,
: 进行cor(X, Y, use="complete", method="pearson")运算Pearson相关系数,
: 再利用循环运算50万笔资料。
: 请问先进,我应该如何开始撰写这样的语法呢?
: 还是我应该改变汇入资料的格式呢?
: 再麻烦各位先进指教!
: 谢谢大家~
: [环境叙述]:
:
: R version 3.2.0 (2015-04-16)
: Platform: i386-w64-mingw32/i386 (32-bit)
:
: [关键字]:
:
: Peearson相关系数
:
作者: Shadowy (+ing)   2015-06-11 16:11:00
谢谢a大,我会再试试的 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com