簡體   English   中英

R中組之間的相關性

[英]correlation between groups in R

df <- data.frame(row.names = c('S.5.0U0','S.6.0U1','S.7.0U2','S.8.0U3'),vara=c(-1.2,15,8.5,0),varb=c(-29,29,2.6,5),var1=c(-0.5,1.5,58,0),var2=c(-2.09,-12,2.6,-0.75),var3 = c(0,0.056,-12,5.5))
> df
        vara  varb var1   var2  var3
S.5.0U0 -1.2 -29.0 -0.5  -2.09  0
S.6.0U1 15.0  29.0  1.5 -12.00  0.056
S.7.0U2  8.5   2.6 58.0   2.60  -12
S.8.0U3  0.0   5.0  0.0  -0.75  5.5

我想關聯varavar1var2var3我想關聯varbvar1var2var3

我試過這個...

ab <- subset(df,select = c(`vara`,`varb`))
other <- subset(df,select = c(`var1`,`var2`,`var3`))

for(n in 1/length(other)){
  n
  for(t in 1/length(ab){
    t
    corr <- broom::tidy(cor.test(n,t))
  }
}

Error in cor.test.default(nutrient, taxa) : 
  not enough finite observations

...然后

apply(df[ ,c(1:2)],2, function(x) cor.test(x, df[ ,c(3:5)]) )

它不工作。 我已經看到了數據框多個變量之間的相關性問題是,在我的真實數據中,我想要關聯的兩個組很棒,所以我真的需要像loopapply類的東西。

謝謝

編輯:問題的說明:

我想使用cor.test因為我想在列表中獲得相關系數以及 p 值。 當我只使用cor.test(df)時會發生此錯誤'x' and 'y' must have the same length

試試這個方法

根據

cor(df)[1, 3:5]
cor(df)[2, 3:5]

或者

cor(df)[1:2, 3:5]

整理宇宙

library(tidyverse)
map_dbl(df[3:5], ~ cor(df$vara, .x))
map_dbl(df[3:5], ~ cor(df$varb, .x))

您可以使用pivot_longer()來制作您想要相互關聯的所有變量組合的長列表。 然后您可以使用group_by()計算所有組合之間的 p 值和相關性估計:

library(tidyr)
library(dplyr) 

df %>% 
  pivot_longer(names_to = "variable_right", values_to = "value_right", var1:var3) %>% 
  pivot_longer(names_to = "variable_left", values_to = "value_left", vara:varb) %>% 
  group_by(variable_left, variable_right) %>% 
  summarise(p.value = cor.test(value_left, value_right)$p.value,
         estimate = cor.test(value_left, value_right)$estimate)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM