Функция R table: как привести порядок вывода имен столбцов в table ()

Я хотел бы изменить вывод порядка столбцов из табличной функции в р. Я могу найти только информацию об изменении порядка столбцов для data.table (а не то, что мне нужно). Порядок столбцов («Нет» и «Да») всегда был постоянным, когда я использовал 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)

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
4 589
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Мы можем использовать factor с указанным levels, потому что ordering основан на алфавитном порядке, где «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

@ Snipper03 У меня действительно работает. ОП попросил изменить порядок имен с «Нет», «Да» на «Да», «Нет».

akrun 02.05.2018 05:08

@ Snipper03 Непонятно, что вы имели ввиду под Doesn't work?

akrun 02.05.2018 05:08

Ваши первая и вторая рекомендации сработали для моего примера, но только ваша первая рекомендация сработала для моих фактических данных (по какой-то причине). Но это все, что мне нужно. Спасибо за ясность, за несколько вариантов и за то, что не слишком усложняете ситуацию.

B.Kenobi 02.05.2018 05:41

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

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

Другие вопросы по теме