基于R中p值的多个列值创建相关矩阵

基于R中p值的多个列值创建相关矩阵,r,for-loop,correlation,p-value,R,For Loop,Correlation,P Value,我是R的新手,我正在尝试创建一个相关矩阵,其中也包括p值 我面临的主要问题是根据三个因素的同一性计算特定数值变量的相关性 我的数据看起来像这样 data.frame( cond = c("low", "medium", "high"), group = c("gr1", "gr2", "gr3"), rand = c("yes", "no"), trial1 = rnorm(30), trial2 = rnorm(30)) 我

我是R的新手,我正在尝试创建一个相关矩阵,其中也包括p值

我面临的主要问题是根据三个因素的同一性计算特定数值变量的相关性

我的数据看起来像这样

    data.frame(
      cond = c("low", "medium", "high"),
      group = c("gr1", "gr2", "gr3"),
      rand = c("yes", "no"),
      trial1 = rnorm(30),
      trial2 = rnorm(30))
我想关联cond、group和rand中每个唯一值的trial1和trial2。基本上,对于这些因素的每一级,我想得到一个r值和p值,并将它们保存在一个矩阵中

我尝试了很长一段时间——通过使用三个逻辑测试(如
(df$cond==“low”)&(df$group==“gr1”)&(df&rand==“yes”)
来提取我想要关联的观察结果。这给了我所需要的,但代码很长,不能将值保存在矩阵中

我以前从未尝试过循环,所以如果有人知道如何进行循环或其他有效的方法,我将不胜感激


谢谢大家!

我真的不明白你想做什么,但这里是你如何为前三个变量的每个可能组合估计一个具有p值的相关矩阵

by(df[,c("trial1","trial2")],list(df$cond,df$group,df$rand),function(x){
  return(list(cor(x),cor.test(x[,1],x[,2])$p.value))
})
库(dplyr)
图书馆(tidyr)
图书馆(purrr)
d%
嵌套()%>%
变异(
cor_test=map(数据、功能(i)cor.test(i$trial1、i$trial2)),
相关性=映射dbl(相关检验,~.x$估计),
p、 value=map\u dbl(cor\u测试,~.x$p.value)
)
x
#>#tibble:6 x 7
#>cond rand group data cor_test相关性p.值
#>                              
#>1低是gr1-0.0329 0.958
#>2中等编号gr2 0.489 0.403
#>3高是gr3-0.413 0.490
#>4低no gr1-0.240 0.697
#>5中等是gr2-0.144 0.817
#>6高无gr3 0.0361 0.954
由(v0.3.0)于2019-08-23创建

  • 首先,按因子水平的所有组合对数据进行分组
  • 然后“嵌套”数据,即对于步骤1中的每个组,创建数据框的“子集”,并将其保存在名为
    data
    (默认名称)的列表变量中
  • 创建一个新的列表变量,
    cor\u test
    ,它使用每个子集的变量
    trial1
    trial2
    保存
    cor.test()
    调用的结果
  • 创建新变量,
    correlation
    p.value
    ,它们只需从列表变量
    cor\u test
    中保存的每个对象中提取r(
    estimate
    )和p(
    p.value
    )元素

  • 这是一种非常灵活的方法,您只需定义用于计算相关性的变量的名称(
    trial1
    trial2
    )。

    谢谢!我编辑了我的帖子,希望能把它说得更清楚。我尝试了你的代码,它可以工作,但我不知道如何删除带有空值的变量,也不知道如何保存它。希望这是有意义的。最后,除了我以外的其他人使用了@Karina,要保存结果,请通过将对象指定给
    。要删除空值,请使用
    过滤器
    过滤器(长度,mybylistobject)