2014-01-29 79 views
0

我有一個由兩組組成的數據集,我想看看這兩個組的所有自變量g1和g2的年齡相關性。最後,我想繪製結果來比較兩組收到的相關值。解卷積函數結果R

到目前爲止,我已經做到了這一點:

corg1 = data.frame('rho'=rep(NA,length(vars)),'p.value'=rep(NA,length(vars))) 
#vars = list of variables I'm interested in 

corg1$rho = apply(data[g1,vars],2,function (x) { cor.test(x,data$Age[g1],method='spearman')$estimate }) 
corg1$p.value = apply(data[g1,vars],2,function (x) {cor.test(x,data$Age[g1],method='spearman')$p.value}) 

然後我重複該過程G2具有不同的數據幀接收的結果。

corg2 = data.frame('rho'=rep(NA,length(vars)),'p.value'=rep(NA,length(vars))) 
#vars = list of variables I'm interested in 

corg2$rho = apply(data[g2,vars],2,function (x) { cor.test(x,data$Age[g2],method='spearman')$estimate }) 
corg2$p.value = apply(data[g2,vars],2,function (x) {cor.test(x,data$Age[g2],method='spearman')$p.value}) 

這給了我,我認爲也同樣訂購2個數據幀,這似乎足夠安全,但它似乎沒有必要運行cor.test兩次,去掉我想要的作品。我也可以使用一個數據幀來捕獲所有結果 - 兩列g1和兩列g2。不過,我確定我錯過了一些東西。

我希望任何建議,使這更像R。

回答

2

類似:

results <- apply(data,2,function (x) { 
    ctg1 <- cor.test(x[g1,vars],data$Age[g1],method='spearman') 
    ctg2 <- cor.test(x[g2,vars],data$Age[g2],method='spearman') 
    c(rho1 = ctg1$estimate, rho2 = ctg2$estimate, p.value1 = ctg1$p.value, p.value2 = ctg2$p.value) 
    } 
) 

你可以爲每個變量組合做cor.test()一次提取您需要的部分。 apply()會將東西粘貼到矩陣中。 (您可能需要通過g1,g2vars

+0

完美!完美的意義,但我不能拿出那一個。謝謝。 – KirkDCO