【问题标题】:How to create subcategories for each row in a data table in R如何为R中数据表中的每一行创建子类别
【发布时间】:2020-12-17 22:48:55
【问题描述】:

我正在尝试创建一个数据表,将每个变量行分类为 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 变量对其进行修改,对于数据集中的 am 变量,根据汽车是属于 0 组还是 1 组,有两个子类别。我很难告诉 R 为 vs 变量设置列组,并且还分别分析每行的 am 组(0 或 1)并将其显示在表中。谢谢!

【问题讨论】:

    标签: r datatable row tidyverse tidy


    【解决方案1】:

    您可以使用tables package

    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
    

    【讨论】:

    • 不错。行的 var 应该是 am。示例输出表具有误导性。 (;
    • 太棒了!非常感谢。
    • @stefan 刚刚看到了那个错误,我的错!我怎么能设置这个,所以行的 var 是 am 而不是 vs?
    • 只需用am 覆盖第一个vs 部分。表格((mpg+drat)*(am=factor(am)+1)~(vs=factor(vs)*(mean)), data=mtcars)
    • 感谢@tamtam 的更正,我编辑了答案
    猜你喜欢
    • 2011-06-22
    • 2016-06-01
    • 1970-01-01
    • 2019-09-04
    • 2020-12-01
    • 1970-01-01
    • 2019-11-13
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多