【问题标题】:Loop through variable names in R循环遍历 R 中的变量名
【发布时间】:2019-10-02 08:51:24
【问题描述】:

我有一个可能非常愚蠢的问题,但似乎无法轻易找到解决方案。而且我对R还很陌生,所以请原谅我的无知。

我正在寻找一种方法来遍历我的数据框中的所有变量。例如,将所有变量与一个特定变量(例如,性别或教育水平)进行比较,制作二维表。我曾经和 Stata 一起工作,但由于 R 是免费的,所以我现在应该和 R 一起工作(我听说与 R 一起工作还有很多其他好处,所以我非常愿意学习 :))。

比如说,我有 20 个变量,其中 15 个是调查的答案,5 个是人口统计变量。我想看看不同的答案与人口统计数据的差异有何不同。

通常我会在 Stata 中使用以下简单的方法来解决上述问题:

for i = 1 to 5 {
    for j = 1 to 3 {
        tab Sex Var`i'_`j', chi2
    }
}

为变量 Var1_1 到 Var5_3 vs Sex 制作 15 个表格,并给出 Pearson chi2 统计量。

所以,我尝试了我认为与 R 相同的方法:

for (i in 1:5) {
  for (j in 1:3){
  print(table(chisq.test(paste(df$Sex, "df$Var",i,"_",j,sep=""))))    
  }
}

但这不起作用。

谁能指出正确的方向来解决这个问题?非常感谢任何帮助!

【问题讨论】:

  • 您可以使用summary(df)lapply(df, table),其中第一个将为您提供data.frame 的摘要,其中数值变量以最小值、最大值、平均值、中值和分类(因子)进行汇总带表的变量。第二个为您提供变量表列表。
  • 你真的需要学习help("$)。它解释了何时可以使用 $ 以及何时使用 [][[]]。一般来说,在一种语言中运行良好的方法不一定能很好地转移到另一种语言。就是这种情况。
  • 谢谢,我会阅读并重试。我还稍微编辑了我的问题,因为我的示例似乎选择不当(考虑到第一条评论如何回答如何通过另一种方式实现类似结果)

标签: r loops variable-names


【解决方案1】:

假设df 是您的数据,前 15 列是答案。 在这种情况下你可以使用这个

lapply(df[,1:15], function(x) {chisq.test(x, df$Sex)}) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2016-01-18
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多