首页 文章

简单的If语句 . 比较非数字值

提问于
浏览 1788
0

我的数据:

pirmas      antras      trecias
    17          44           55
   788         890         1409
   968         218          344
   333         355           Na

我想检查哪个相关性更大:

  • pirmas和antras列之间的相关性

  • 或antras和trecias列之间的相关性

接下来,我想写 If statement . 如果 antrastrecias 列之间的相关性较大,我会使用列antras的值填充最后一列中的此N / A值 . 但是我得到一个错误,因为函数cor.test是test并且没有给我一个数字答案,所以我无法在If语句中比较它们 .

我怎样才能做到这一点?

我的源代码:

data<- X12_5_3
data
a<-cor.test(data$pirmas, data$trecias)
b<-cor.test(data$antras, data$trecias)

if (a<b) {
data$trecias[4]<-data$antras[4]  

}
data

2 回答

  • 2

    您可以使用 $estimate 从测试对象中提取相关值 .

    set.seed(7)
    a <- cor.test(rnorm(5), rnorm(5))
    b <- cor.test(rnorm(5), rnorm(5))
    
    if (a$estimate < b$estimate) {
      print('correlation of a smaller than b')
    }
    
  • 2

    如果您不需要执行 hypothesis test ,只需使用 cor() 来获取它们的相关系数 . 此外,由于存在缺失值,您需要控制参数 use 来处理它 .

    a <- cor(df$pirmas, df$trecias, use = "complete.obs")
    b <- cor(df$antras, df$trecias, use = "complete.obs")
    

相关问题