创建2x2二进制变量表

时间:2019-06-21 16:46:27

标签: r

我试图基于两个变量创建一个表格:贸易强度和军事支出。这些是整数值,但是我创建了一个虚拟变量,以便将它们分为每个国家(1个)或均值(0)以下。

我想要一个看起来像下面的表格,并拉上国家名称!基本上所有1和所有0都放入相应的框中。

                      Low Trade          High Trade
Low Military Spend    xxx, xxx, xxx      xxx, xxx

High Military Spend   xxx, xxx           xxx   

这有可能吗?我根本不知道该怎么做。

非常感谢,N

1 个答案:

答案 0 :(得分:0)

这是一个可行的解决方案。首先,我要准备一些数据。

library(dplyr)

example_of_your_data <- 
  tibble(country_name = paste("Country ", LETTERS), 
         milex_dummy = sample(c(0, 1), 26, replace = TRUE), 
         trade_dummy = sample(c(0, 1), 26, replace = TRUE))

example_of_your_data看起来像这样:

# A tibble: 26 x 3
   country_name milex_dummy trade_dummy
   <chr>              <dbl>       <dbl>
 1 Country  A             1           0
 2 Country  B             1           1
 3 Country  C             1           1
 4 Country  D             1           0
 5 Country  E             1           0
 6 Country  F             0           1
 7 Country  G             1           0
 8 Country  H             1           1
 9 Country  I             0           1
10 Country  J             1           1
# ... with 16 more rows

然后,我将您的虚拟数值变量转换为因子,并将数据汇总为长格式:

example_of_your_data %>% 
  mutate(military = factor(milex_dummy, 
                           labels = c("Low Military Spend", 
                                      "High Military Spend")), 
         trade = factor(trade_dummy, 
                        labels = c("Low Trade", 
                                   "High Trade"))) %>% 
  group_by(military, trade) %>% 
  summarize(country = paste(country_name, collapse = ", ")) -> tbl_long

然后我构造矩阵。

with(tbl_long, {
  matrix(country, 
         nrow = 2, 
         byrow = TRUE, 
         dimnames = list(levels(military), 
                         levels(trade)))
})