繁体   English   中英

R表函数:如何强制表()的列名输出顺序

[英]R table function: how to coerce order of column names output of table()

我想改变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)

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM