【问题标题】:R table function: how to coerce order of column names output of table()R表函数:如何强制表()的列名输出的顺序
【发布时间】:2018-10-12 02:02:42
【问题描述】:

我想更改 R 中表格函数输出的列顺序。我只能找到有关为 data.table 操作列顺序的信息(不是我想要的)。当我使用 R(字母顺序?)时,列的顺序(“否”和“是”)始终是一致的,但由于某种原因,我的一些表以不同的顺序返回(“是”和“否” ”)。我需要这些保持一致(因为我正在组合一些表)并排序,以便“是”是最后一个。我正在制作数百个带有相关统计数据的表格,并有一些定制的公式来帮助我 - 但我无法仔细检查每个表格的顺序 - 所以我想告诉 R 具体做什么。当我进行卡方测试时,我不想将每个表更改为 data.frame,重新排序列,然后以某种方式更改回表。表格列的顺序很重要,因为我正在组合一些表格(并且 R 错误地强制这些表格),并且还进行优势比,所以我需要“是”才能始终排在最后。出于好奇(没有必要),有人可以向我解释为什么我的一些数据按字母顺序生成表格列,而其他数据却没有。我附上了我的数据的简化版本。

df <- data.frame(treatment = c("A","A","B","A","B","A","B","B"),
    symptom = c("Yes","Yes","No","No","Yes","Yes","Yes","No"))
table(df)

由于此示例生成我想要的表列顺序,请编写代码将列顺序从“否”、“是”更改为“是”、“否”

【问题讨论】:

    标签: r algorithm sorting columnname


    【解决方案1】:

    我们可以使用factor 指定levels,因为ordering 是基于字母顺序,其中“N”在“Y”之前(第一个字母等等)。这可以通过以自定义顺序转换为factorlevels 来更改。

    table(df$treatment, factor(df$symptom, levels = c("Yes", "No")))
    #     Yes No
    #  A   3  1
    #  B   2  2
    

    或者使用transform,然后使用table

    table(transform(df, symptom = factor(symptom, levels = c("Yes", "No"))))
    #         symptom
    #treatment Yes No
    #       A   3  1
    #       B   2  2
    

    但是,我们可以在 table 之后通过指定顺序(列索引或列名)来执行此操作,但如果我们不知道哪些是级别,这将变得更加乏味

    table(df)[, 2:1]
    #        symptom
    #treatment Yes No
    #       A   3  1
    #       B   2  2
    

    【讨论】:

    • @Snipper03 它对我有用。 OP 要求将名称的顺序从“否”、“是”更改为“是”、“否”
    • @Snipper03 不清楚你说的Doesn't work是什么意思?
    • 您的第一个和第二个建议适用于我的示例,但只有您的第一个建议适用于我的实际数据(出于某种原因)。但这就是我所需要的。感谢您的明确,提供了一些选项,并且没有使事情过于复杂。
    【解决方案2】:

    您可以按照自己的方式订购:

    table(df)[,2:1]
             symptom
    treatment Yes No
            A   3  1
            B   2  2
    table(df)[,c("Yes","No")]
             symptom
    treatment Yes No
            A   3  1
            B   2  2
    
     levels=c("Yes","No")
     table(df)[,levels]
                 symptom
        treatment Yes No
                A   3  1
                B   2  2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多