Табличная функция R: как привести порядок вывода имен столбцов из таблицы () - PullRequest
0 голосов
/ 02 мая 2018

Я хотел бы изменить порядок вывода столбцов из табличной функции в 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)

Поскольку в этом примере создается желаемый порядок столбцов в таблице, напишите код, чтобы изменить порядок столбцов с «Нет», «Да» на «Да», «Нет»

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вы можете заказать его так, как хотите:

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
0 голосов
/ 02 мая 2018

Мы можем использовать factor с указанием levels, потому что order ing основан на алфавитном порядке, где «N» предшествует «Y» (первая буква и т. Д.). Это можно изменить путем преобразования в factor с levels в произвольном порядке.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...