2017-04-06 56 views
1

考慮以下的調查數據刪除內部COR的值()的:案例明智中的R

data <- replicate(10 ,sample(c(1,2,3,4), 1000, replace = TRUE)) %>% 
    as.data.frame() 

V1:V9是變量,其中1 = "Good"2 = "Okey"3 = "Not Good"4 = "Don't know"V10是一個序變量,其中1 = "Good"2 = "Not good"3 = "Don't know"4 = "Don't want to answer"

我對使用cor()這些變量計算簡單相關矩陣感興趣。但是,我只想在實際上意味着某些事情的值之間進行計算。即1,2,3V1:V91,2V10

換句話說,我希望的情況下,明智的任何值> 2cor()函數中刪除V1:V9任何價值> 3和同爲V10

這與使用參數類似嗎?

我設法解決這個問題的唯一方法是將這些值變爲NA。

library("dplyr") 
data_test <- data_test %>% 
     mutate_each(funs(ifelse(. > 3, NA, .)), -V10) %>% 
     mutate(ifelse(V10 > 2, NA, V10)) 

cor(data_test, use = "complete.obs") 

但是有沒有更好的方法,不一定依賴修改數據。

PS。當然,有更多的方法來計算序數變量之間的相關性。

+1

相關文章:[here](http://stats.stackexchange.com/questions/108007)和[here](http://datascience.stackexchange.com/questions/893) – zx8754

回答

0

這個問題的答案比我想的要簡單。

由於@ zx8754指出,在爲分類變量選擇相關方法時應該小心。

不管怎麼說,你只是在cor()

改變use = "pairwise.complete.obs"但是,你仍然需要發生變異4 NA