tags:

views:

59

answers:

2

I'm running cor() on a data.frame with 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?

+3  A: 

The 1s are because everything is perfectly correlated with itself, and the NAs are because there are NAs in your variables. You will have to specify how you want R to compute the correlation when there are missing values, because the default is to only compute a coefficient with complete information; you can change this behavior with the use argument to cor; see ?cor for details.

Fojtasek
+2  A: 

NAs also appear if there are attributes with zero variance (with all elements equal); see for instance:

cor(cbind(a=runif(10),b=rep(1,10)))

which returns:

   a  b
a  1 NA
b NA  1
Warning message:
In cor(cbind(a = runif(10), b = rep(1, 10))) :
  the standard deviation is zero
mbq