Как создать подкатегории для каждой строки в таблице данных в R

#r #datatable #row #tidyverse #tidy

#r #datatable #строка #tidyverse #аккуратный

Вопрос:

Я пытаюсь создать таблицу данных, которая сортирует каждую из переменных строк на 2 разные подгруппы. Вот воспроизводимый пример, который, надеюсь, прояснит, что я хотел бы сделать.

 table <- mtcars %>% 
  group_by(vs) %>% 
  summarise(MPG=mean(mpg),DRAT=mean(drat))

table=t(table)
table

          [,1]      [,2]
vs    0.000000  1.000000
MPG  16.616667 24.557143
DRAT  3.392222  3.859286 

#here is what I would like the output to look like, but am unsure how to do create it (some of these numbers I just made up) 

                    **[,1]      [,2]
vs               0.000000  1.000000
MPG (overall)   16.616667 24.557143**
   MPG (am=1)         14        13 
   MPG (am=0)         11        12 
**DRAT (overall) 3.392222  3.859286**  
   DRAT (am=1)        3.1       3.6 
   DRAT (am=0)         4          4 
  

Итак, имея в виду эту таблицу, я хочу изменить ее таким образом, чтобы для переменных MPG и DRAT было две подкатегории, основанные на том, находятся ли автомобили в группе 0 или 1 для переменной am в наборе данных. Мне сложно указать R, чтобы у R были группы столбцов для переменной vs, а также отдельно анализировать группы am (0 или 1) для каждой строки и отображать это в таблице. Спасибо!

Ответ №1:

Вы могли бы использовать tables пакет :

 tabular((mpg drat)*(am=factor(am) 1)~(vs=factor(vs)*(mean)), data=mtcars)
                       
          vs           
          0      1     
      am  mean   mean  
 mpg  0   15.050 20.743
      1   19.750 28.371
      All 16.617 24.557
 drat 0    3.121  3.570
      1    3.935  4.149
      All  3.392  3.859
  

Комментарии:

1. Неплохо. Переменная для строк, вероятно, должна быть am . Пример выходной таблицы вводит в заблуждение. (;

2. Отлично! Большое спасибо.

3. @stefan только что увидел эту ошибку, мой плохой! Как я мог бы настроить это так, чтобы переменная для строк была am, а не vs?

4. Просто замените первую vs часть на am . табличный ((mpg drat)*(am= factor(am) 1) ~(vs= factor(vs)*(среднее значение)), данные = mtcars)

5. спасибо @tamtam за исправление, я отредактировал ответ