【问题标题】:Conducting a t-test with a grouping variable使用分组变量进行 t 检验
【发布时间】:2017-02-02 14:52:42
【问题描述】:

开始使用 R 完成任务,我以前没有真正使用过它,所以如果这是基本的,请道歉。

brain 是一个 Excel 数据框。其格式如下(奇数 40 行):

para1 para2 para3 para4 para5 para6 para7
FF 133 132 124 118 64.5 816932

highVAL = ifelse(brain$para2>=130,1, 0)

highVAL 给了我一个 1 和 0 的向量,按 para2 分类。

我希望对两组之间的平均 para7 执行 t 检验:para2 > 130 的行和 para2

在 Python 中,我会构造两个新数组并在其中附加值,然后在那里执行 t 检验。不知道我会如何在 R 中处理它。

【问题讨论】:

    标签: r dataframe syntax anova


    【解决方案1】:

    你比你想象的更接近!您的 highVAL 变量应作为新列添加到 brain 数据框:

    brain$highVAL <- brain$FSIQ >= 130
    

    这会为数据集添加一个真/假列。然后就可以使用t-test的公式界面运行测试了:

    result <- t.test(MRIcount ~ highVAL, data = brain)
    

    【讨论】:

    • 我已将它(获取您的代码)添加到数据框中,当我运行代码并到达该行时,出现错误:$&lt;-.data.frame 中的错误@(*tmp*, "highIQ", value = logical(0)) : 替换有 0 行,数据有 40 行。
    • 如果没有可重现的示例,就无法诊断您的错误。你能提供你问题中的数据吗?使用dput(brain) 并粘贴结果。
    • 我已编辑我的答案以反映您的数据集中存在的真实变量名称。 ifelse 的使用也是不必要的,因为您真正需要的只是逻辑比较给出的真/假结果(创建highVAL 的行)。 t.test的公式界面基本上就是说,“MRIcount是因变量,highVAL是自变量,两者都可以在brain找到。
    • 谢谢!我现在遇到了一个新错误。我将再次将我的输出发布到原始帖子。我想这就是我感到困惑的地方。我在 RStudio 中工作,为了执行代码,我突出显示了我要运行的块,然后按 CTRL+r。不知道为什么我会遇到错误。
    • 您似乎将ifelse 与标准if 混淆了,ifelse 是一个专用函数,它是一个使用{ } 大括号的条件语句。尽管如此,这种条件循环是不必要的。将 highVAL 列添加到 brain 后,您可以运行 t 检验,如我的解决方案中所示。如果您的教授希望您使用循环,那既不是我的问题,也不是一个好方法。 ;-)
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2023-01-13
    • 2022-07-20
    • 2014-05-28
    相关资源
    最近更新 更多