cor shows only NA or 1 for correlations - Why?

Viewed 148195

I'm running cor() on a data.framewith all numeric values and I'm getting this as the result:

       price exprice...
price      1      NA
exprice   NA       1
...

So it's either 1 or NA for each value in the resulting table. Why are the NAs showing up instead of valid correlations?

6 Answers

very simple and correct answer

Tell the correlation to ignore the NAs with use argument, e.g.:

cor(data$price, data$exprice, use = "complete.obs")

In my case I was using more than two variables, and this worked for me better:

cor(x = as.matrix(tbl), method = "pearson", use = "pairwise.complete.obs")

However:

If use has the value "pairwise.complete.obs" then the correlation or covariance between each pair of variables is computed using all complete pairs of observations on those variables. This can result in covariance or correlation matrices which are not positive semi-definite, as well as NA entries if there are no complete pairs for that pair of variables.

Related