首页 文章

Tabm(Stata)相当于R

提问于
浏览
0

我有几个分类变量,其值为1-3 . 我想创建一个类似于Stata中tabm特征生成的表,它向我显示每个分类变量的观察数 .

在Stata,我只想写:

tabm Variable1 Variable2 Variable3

这是表格的外观(obs =观察):

Value=1    Value=2   Value=3
Variable1      5 obs     10 obs    12 obs
Variable2      2 obs     9 obs     0 obs
Variable3      12 obs    9 obs     3 obs

我读了一些关于Cross.Table的帖子,但我的R版本不接受gmodels(R版本3.4.4) .

3 回答

  • 1

    假设每个变量都有各个类别值且长度相等,我们可以使用rbind和table:

    x <- c(1,1,1,1,2,2,3,3)
    y <- c(1,2,2,2,3,3,3,3)
    z <- c(1,1,2,3,2,2,2,2)
    
    rbind(table(x), table(y), table(z)) #gives us:
    
          1 2 3
     [1,] 4 2 2
     [2,] 1 3 4
     [3,] 2 5 1
    
  • 0

    我们可以在 sapply() 申请 table() .

    Example

    t(sapply(df1[, c("Variable1", "Variable2", "Variable3")], table))
    

    Yielding

    > t(sapply(df1[, c("Variable1", "Variable2", "Variable3")], table))
               1  2  3
    Variable1 10 17 23
    Variable2 20 14 16
    Variable3 11 19 20
    

    Data

    set.seed(42)
    df1 <- setNames(data.frame(replicate(5, sample(3, 50, replace = TRUE))), 
                    paste0("Variable", 1:5))
    
  • 0

    或者 tidyverse 备选方案,其中包含与上述相同的数据:

    library(dplyr)
    library(tidyr)
    
    gather(df1, var, value) %>%
      count(var, value) %>%
      spread(value, n)
    

    生产环境

    # A tibble: 5 x 4
      var         `1`   `2`   `3`
      <chr>     <int> <int> <int>
    1 Variable1    10    17    23
    2 Variable2    20    14    16
    3 Variable3    11    19    20
    4 Variable4    20    11    19
    5 Variable5    19    20    11
    

相关问题