使用tidyr和dplyr提取几对变量的相关性

时间:2016-04-28 18:27:25

标签: r dplyr tidyr

我有两种不同类型的因子分析(oblimin和varimax)附加到我的数据集的结果。我希望关联 - 也许还要绘制 - 从第一个因素到结束轮换的分数与第一个因子从最大值旋转的分数,然后是第二个因素来自两个等等。因为我' d喜欢可视化不同类型旋转的效果。我的数据看起来如下所示。不知怎的,我觉得我应该能够得到一个如下所示的数据框:

Variable | Oblimin Score | Varimax Score
h        | 0.23          | 0.12
h        | -1            | -.87
i        | 0.2           | 0.3
i        | 0.5           | 0.4
...      | ...           | ...

提供示例数据框的代码如下所示。目前,我以错误消息结束,即有重复的标识符。我尝试了解决方案,在链中提供了一个如下所示的唯一ID号 - mutate(id = sequence(n()))%>% - 但是它产生了一个数据帧,其中oblimin和varimax得分在交替的行上

#libraries
library(tidyr)
library(dplyr)
#fake data
h.varimax<-rnorm(1000)
h.oblimin<-rnorm(1000)
i.varimax<-rnorm(1000)
i.oblimin<-rnorm(1000)
df<-data.frame(h.varimax, h.oblimin, i.varimax, i.oblimin)
#restructuring
df%>%
#this is necessary in my code, not in the sample data code though
select(contains('varimax'), contains('oblimin'))%>%
#wide to long
gather(variable, value) %>%
#split the variable 'variable' so that I have one variable with two values,     
#h or i.  I want to correlate the oblimin and the varimax scores for the i 
#variables and the oblimin and the varimax scores for the h variables     
separate(variable, into=c('factor', 'method')) %>%
#This seems necessary to spread the method variable back into two columns     
spread(method, value)

0 个答案:

没有答案