如何创建一个循环来更改数据框中列名称的一部分

时间:2019-07-04 16:32:10

标签: r loops

我正在尝试为包含一系列多项目度量的调查数据找到Cronbach的Alpha。看起来不必像循环那样可以更有效地管理某些事情,而不必手动写出每个多项目度量,但是根据问题编号,只需要更改部分列名即可。

目前在我脑海中浮现的基本想法是...

    for (N in 4:22) {
      ytqN <- data.frame(YT_Data$QNa, YT_Data$QNb, YT_Data$QNc)

    alpha(ytqN)
    }

然后,循环将为每个多项目量度创建新的数据帧,并随即运行Cronbach的Alpha。

但这不起作用。 :(

    ytq4 <- data.frame(YT_Data$Q4a, YT_Data$Q4b, YT_Data$Q4c)

    alpha(ytq4)

    ytq5 <- data.frame(YT_Data$Q5a, YT_Data$Q5b, YT_Data$Q5c)

    alpha(ytq5)

    ytq6 <- data.frame(YT_Data$Q6a, YT_Data$Q6b, YT_Data$Q6c)

    alpha(ytq6)

    ytq7 <- data.frame(YT_Data$Q7a, YT_Data$Q7b, YT_Data$Q7c)

    alpha(ytq7)

    ytq8 <- data.frame(YT_Data$Q8a, YT_Data$Q8b, YT_Data$Q8c)

    alpha(ytq8)

    ytq9 <- data.frame(YT_Data$Q9a, YT_Data$Q9b, YT_Data$Q9c)

    alpha(ytq9)

    ytq10 <- data.frame(YT_Data$Q10a, YT_Data$Q10b, YT_Data$Q10c)

    alpha(ytq10)

    ytq11 <- data.frame(YT_Data$Q11a, YT_Data$Q11b, YT_Data$Q11c)

    alpha(ytq11)

    ytq12 <- data.frame(YT_Data$Q12a, YT_Data$Q12b, YT_Data$Q12c)

    alpha(ytq12)

    ytq13 <- data.frame(YT_Data$Q13a, YT_Data$Q13b, YT_Data$Q13c)

    alpha(ytq13)

    ytq14 <- data.frame(YT_Data$Q14a, YT_Data$Q14b, YT_Data$Q14c)

    alpha(ytq14)

    ytq15 <- data.frame(YT_Data$Q15a, YT_Data$Q15b, YT_Data$Q15c)

    alpha(ytq15)

    ytq16 <- data.frame(YT_Data$Q16a, YT_Data$Q16b, YT_Data$Q16c)

    alpha(ytq16)

    ytq17 <- data.frame(YT_Data$Q17a, YT_Data$Q17b, YT_Data$Q17c)

    alpha(ytq17)

    ytq18 <- data.frame(YT_Data$Q18a, YT_Data$Q18b, YT_Data$Q18c)

    alpha(ytq18)

    ytq19 <- data.frame(8 - YT_Data$Q19a, YT_Data$Q19b, YT_Data$Q19c)     
    # Reverse code Q19a

    alpha(ytq19)

    ytq20 <- data.frame(YT_Data$Q20a, YT_Data$Q20b, YT_Data$Q20c)

    alpha(ytq20)

    ytq21 <- data.frame(YT_Data$Q21a, YT_Data$Q21b, YT_Data$Q21c)

    alpha(ytq21)

    ytq22 <- data.frame(YT_Data$Q22a, YT_Data$Q22b, YT_Data$Q22c)

    alpha(ytq22)

期望的结果将是一个输出,该输出包含针对我当前正在处理的数据集中问题4-22的多项目测度的所有Cronbach的Alpha值,而无需通过单个代码执行问题。

1 个答案:

答案 0 :(得分:1)

如果包含数据,则更容易获得帮助,但我想这应该可以工作:

alpha_list = list()
for(N in 4:22){

  ytq = data.frame(YT_Data[paste0("Q",N,"a")],
                        YT_Data[paste0("Q",N,"b")],
                        YT_Data[paste0("Q",N,"c")])

  alpha_list[[N]] = alpha(ytq)
}

我们在循环paste0()时使用N创建列名。 alpha_list将是一个列表,其中包含alpha()

给出的结果