2017-02-20 4 views
0

データが欠落している2つの列があります。2つの列の欠損値を除外する観測のサブセットを見つけよう

Var1 Var2 
1445 40 
656  NA 
NA  NA 
607  NA 
2098 15 

これらの列間の相関を計算し、欠落したデータを除外したいと考えています。私は

cor(na.omit(df$Var1),na.omit(df$Var2),method="pearson") 

を試してみました。しかし、私は、)$ var2のdfを(COR(na.omit($ VAR1 DF)、na.omitで

エラーを取得: 互換性のない寸法

これは、2つの変数の交点を取るのではなく、私が得ていると考えているからです。

Var1(NA omit) Var2(NA omit) 
1445   40 
656    15 
607  
2098 

であるため、列の長さが変更されるため、相関を実行することはできません。

NAを含むすべての観測を省略して、列の長さを同じにするにはどうすればよいですか?

+0

'COR($ VAR1 DF na.omit()、$ var2のDF na.omit()、メソッド= "ピアソン"、=「ペアワイズを使用.complete.obs ")' – kaksat

+2

しかし、あなたはこれを読んでみたいと思うかもしれません:[Pairwise-complete correlation with dangerous](http://bwlewis.github.io/covar/missing.html)。 –

+0

ありがとう、これについて知りませんでした。 – kaksat

答えて

1

欠損値は、use引数を使用して処理できます。 ?cor

使用欠損値の存在下で 共分散を計算するための方法を与える任意の文字列を参照してください。これは、文字列 "everything"、 "all.obs"、 "complete.obs"、 "na.or.complete"、または "pairwise.complete.obs"のいずれかの文字列(の の省略形)である必要があります。

cor(df1, use = "complete.obs") 
#  Var1 Var2 
# Var1 1 -1 
# Var2 -1 1  

データ:

df1 <- structure(list(Var1 = c(1445L, 656L, NA, 607L, 2098L), 
         ar2 = c(40L, NA, NA, NA, 15L)), 
       .Names = c("Var1", "Var2"), 
       row.names = c(NA, -5L), class = "data.frame") 
+0

素晴らしい。私は 'use =" complete.obs "'を見ましたが、それが何のためだったのか分かりませんでした。それはそれを正確に解決しました。 –

1

あなたは平均して、各変数のNA値を交換してOKであれば、これは一つのアプローチです:

var1[is.na(var1)] <- mean(var1, na.rm=TRUE) 
var2[is.na(var2)] <- mean(var2, na.rm=TRUE) 
cor(var1, var2, method="pearson") 

欠損値の割合が小さいことがあれば、結果はあなたが相関のために得ます係数(ピアソン、スピアマンなど)は依然として真実を反映しているはずです。

関連する問題