如何在 R 中将多个频率 table 堆叠为一个 table?

How do I stack multiple frequency tables into one table in R?

我不知道我是否在尝试寻找问题的答案时使用了错误的术语,但我一直无法弄清楚这似乎是一个简单的问题。我有一个包含多个变量的大型数据集,我想要 运行 一系列 2 路频率 tables。我的变量之一是 "Country",我需要按每个国家(其中有 31 个)划分我的频率。我有 3 个变量,抗议,暴动,以及两者的组合 - 示威。我正在对每个滞后数据面板变量进行交叉表 - lag.value。我了解如何将它们编码为独立测试,但是,有没有一种方法可以 "stack" 将所有内容合并到一个 table 中?如 lag.value 位于顶部,每一行代表一个国家/地区的输出?还是有选择地列出几个国家进行测试?

DT <- data.table(Country = rep(c("India", "Pakistan", "Sudan"), 12), 
             Protest = sample( 0:1, size = 12, replace = T),
             Riot = sample( 0:1, size = 12, replace = T), 
             Demonstrations = sample( 0:1, size = 12, replace = T),
             lag.value = sample( 0:1, size = 12, replace = T))

DT[Country == 'India', table(Protest, lag.value)]
DT[Country == 'Pakistan', table(Protest, lag.value)]
DT[Country == 'Sudan', table(Protest, lag.value)]

只看 lag.value 的抗议......我理解如何做是个人 table

#india
# lag.value
#Protest 0 1
#      0 3 3
#      1 3 3

#pakistan
# lag.value
#Protest 0 1
#      1 3 9

#sudan
#lag.value
#Protest 0 1
#      0 3 3
#      1 6 0

有没有办法让 table(带有国家/地区名称)显示干净?像这样:

#         lag value
#Protest     0 1 
# India    0 3 3
#          1 3 3
# Pakistan 1 3 9 
# Sudan    0 3 3
#          1 6 0

不是 运行 在每个子集上单独 table,而是通过包含 'Country' 列

来执行 ftable
DT[, ftable(Country, Protest, lag.value)]
          lag.value  0  1
Country  Protest                
India    0                  0  6
         1                  0  6
Pakistan 0                  0  9
         1                  3  0
Sudan    0                  0  0
         1                  0 12