【问题标题】:Loop for Correlation Item-Score without containing Item不包含项目的相关项目分数循环
【发布时间】:2020-11-12 10:33:11
【问题描述】:

我有一个庞大的数据集,我想计算每个项目与量表总分的相关性,但不包含该项目。现在我可以为每个项目单独做,但我正在尝试做一个循环,这样会更容易一些。

示例数据集:

dat <- read.table(header=TRUE, text="
ItemX1 ItemX2 ItemX3 ItemX4 ItemX5 ItemX6 ItemY1 ItemY2 ItemY3 ItemY4 ItemY5 ItemY6
1 1 0 1 0 1 1 1 0 1 0 1
0 1 0 0 0 1 0 1 0 0 0 1
1 1 0 1 0 1 1 1 0 1 0 0 
1 0 1 0 0 1 1 0 1 0 0 1 
1 1 0 1 1 1 1 1 0 1 1 0
0 0 1 1 0 0 0 0 1 1 0 0
")

xscore <- rowSums(select(dat, starts_with("ItemX")))

现在我可以像下面那样做,但是因为我有 107 个项目,所以有点多。


cor(dat$ItemX1,rowSums(select(dat, starts_with("ItemX") & -"ItemX1")),use="pairwise.complete.obs")
cor(dat$ItemX2,rowSums(select(dat, starts_with("ItemX") & -"ItemX2")),use="pairwise.complete.obs")
cor(dat$ItemX3,rowSums(select(dat, starts_with("ItemX") & -"ItemX3")),use="pairwise.complete.obs")
cor(dat$ItemX4,rowSums(select(dat, starts_with("ItemX") & -"ItemX4")),use="pairwise.complete.obs")
cor(dat$ItemX5,rowSums(select(dat, starts_with("ItemX") & -"ItemX5")),use="pairwise.complete.obs")
cor(dat$ItemX6,rowSums(select(dat, starts_with("ItemX") & -"ItemX6")),use="pairwise.complete.obs")

这就是我尝试以下循环的原因,但现在我不知道如何指定 rowSums 是在没有用于关联的项目的情况下计算的。


variables <- names(dat)
names.item <- c(grep("ItemX", variables, value = TRUE))

item.diff.p <- data.frame(matrix(NA, ncol=2, nrow=(length(names.item)-1)))
names(item.diff.p) <- c("Item", "cor")
length(names.item)

for(i in 1:(length(names.item))-1){
  
  item <- names.item[i]
  
  par <- cor(dat[,names(dat)[grepl("ItemX",names(dat))]],
             rowSums(select(dat, starts_with("ItemX"))),use="pairwise.complete.obs")
  
  item.diff.p[i, c("cor")] 
  
}
par

谢谢大家!

【问题讨论】:

    标签: r dataframe correlation


    【解决方案1】:

    您可以遍历子集数据帧的列,并计算:

    X_dat = dat[,grep("^ItemX",colnames(dat))]
    
    res = sapply(1:ncol(X_dat),function(i){
           cor(X_dat[,i],rowSums(X_dat[,-i]),use="p")
    })
    
    names(res) = colnames(X_dat)
    
     res
        ItemX1     ItemX2     ItemX3     ItemX4     ItemX5     ItemX6 
     0.6324555  0.1250000 -0.7500000  0.1250000  0.4152274  0.2335497 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多