考虑以下调查数据:
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,3
对于V1:V9
和1,2
对于V10
。
换句话说,我希望删除函数中任何值的大小写> 3
,并且对于函数内的V1:V9
任何值都相同。> 2
V10
cor()
这将类似于 use 参数?
我设法解决这个问题的唯一方法是将这些值更改为 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。当然,有更充分的方法来计算序数变量之间的相关性。