小编nel*_*ell的帖子

cor()缺少值

我想要一个只有相关系数大于0.2的矩阵.我提出了以下解决方案.

mts.data <- ts(data.frame(a=arima.sim(model=list(1,0,0), n=10), 
      b=arima.sim(model=list(1,0,1), n=10), c=arima.sim(model=list(1,0,0), 
      n=10), d=arima.sim(model=list(1,0,2), n=10),
      e=arima.sim(model=list(2,0,1), n=10)), start=c(2007,1), frequency=12)

critcor <- function(x) {
  crit.mat <- matrix(0, nrow=ncol(x), ncol=ncol(x))
  for(j in 1:ncol(x)) {
    for(i in 1:ncol(x)) {
      if(abs(cor(x[,i], x[,j])) > 0.2) {
        crit.mat[i,j] <- cor(x[,i], x[,j])
      }
    }
  }
  return(crit.mat)
}
Run Code Online (Sandbox Code Playgroud)

这很好用.不幸的是,我的数据集包含缺失值.

mts.data[1:3, 4] <- NA
mts.data[9:10, 5] <- NA 
Run Code Online (Sandbox Code Playgroud)

当我运行我的功能时,我收到了一个错误.

critcor(mts.data)
# Error in if (abs(cor(x[, i], x[, j])) > 0.2) { : 
#   missing value where TRUE/FALSE needed 
Run Code Online (Sandbox Code Playgroud)

我现在正在浏览互联网几个小时,我完全不知道如何解决这个问题.如果由于缺少值而无法进行相关,我希望我的函数只打印0.

loops r missing-data correlation

1
推荐指数
1
解决办法
822
查看次数

标签 统计

correlation ×1

loops ×1

missing-data ×1

r ×1