我有大约20个关于标记为“Y”或“N”的不同城市的变量并且是因素。变量就像“有合作社”等。我想找到一些相关性,并可能使用corrplot包来显示所有这些变量之间的连接。但由于某种原因,我无法强制变量,以便以cor()
或甚至 M <- cor(model.matrix(~.-1,data=mydata[c(25:44)]))
喜欢的方式阅读它们,以便我可以将它们放入矩阵中。我试过了:
userInput = raw_input(
'Enter n to deal a new hand, r to replay the last '
'hand, or e to end game: ')
但是corrplot的结果真的很奇怪。有没有人有快速的方法将一堆Y / N答案变成相关矩阵?谢谢!
答案 0 :(得分:7)
您可以使用sjp.corr
函数或sjt.corr
函数进行sjPlot-package的图形或表格输出。
DF <- data.frame(v1 = sample(c("Y","N"), 100, T),
v2 = sample(c("Y","N"), 100, T),
v3 = sample(c("Y","N"), 100, T),
v4 = sample(c("Y","N"), 100, T),
v5 = sample(c("Y","N"), 100, T))
DF[] <- lapply(DF,as.integer)
library(sjPlot)
sjp.corr(DF)
sjt.corr(DF)
情节:
表格(在RStudio查看器窗格中):
您可以使用许多参数来修改绘图或表格的外观,请参阅一些示例here。
答案 1 :(得分:3)
对于二进制变量,您可以考虑cross tabs(R中的table
函数)。
但是,获取相关矩阵非常简单:
# example data
set.seed(1)
DF <- data.frame(x=sample(c("Y","N"),100,T),y=sample(c("Y","N"),100,T))
# how to get correlation
DF[] <- lapply(DF,as.integer)
cor(DF)
# x y
# x 1.0000000 -0.0369479
# y -0.0369479 1.0000000
# visualize it
library(corrplot)
corrplot(cor(DF))
在此示例中转换为整数时,"N"
为1
,"Y"
为2
。我不确定这是否一般(对于R的存储因素)。要查看数据的映射,请在转换为整数之前尝试lapply(DF,levels)
。
对我而言,情节是有道理的。如果您对此相关的统计解释有疑问,请考虑查看http://stats.stackexchange.com