library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.8     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.1
## Warning: package 'tidyr' was built under R version 4.0.5
## Warning: package 'readr' was built under R version 4.0.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()

1 サンプルデータを用意する。

set.seed(1234)
data.frame(地域=factor(sample(x = c("A","B","C","D"),size = 100,replace = TRUE)),
           回答=factor(sample(x = c("はい","いいえ","どちらでもない"),size = 100,replace = TRUE),levels=c("はい","いいえ","どちらでもない"))) -> .dd 
.dd %>% head()
##   地域           回答
## 1    D           はい
## 2    D どちらでもない
## 3    B どちらでもない
## 4    B           はい
## 5    A どちらでもない
## 6    D         いいえ
summary(.dd)
##  地域               回答   
##  A:19   はい          :34  
##  B:29   いいえ        :33  
##  C:23   どちらでもない:33  
##  D:29

2 集計1 地域Aでの回答の集計

.dd %>% filter(地域=="A") %>% count(回答)
##             回答 n
## 1           はい 6
## 2         いいえ 6
## 3 どちらでもない 7

3 もしくは

.dd %>% filter(地域=="A") %>% count(回答) %>% pivot_wider(names_from = 回答,values_from = n)
## # A tibble: 1 × 3
##    はい いいえ どちらでもない
##   <int>  <int>          <int>
## 1     6      6              7

4 これを各地域ごとに出力して、bind_rowするのか…

5 group_byを使う

.dd %>% group_by(地域) %>% count(回答) %>% pivot_wider(names_from = 回答,values_from = n)
## # A tibble: 4 × 4
## # Groups:   地域 [4]
##   地域   はい いいえ どちらでもない
##   <fct> <int>  <int>          <int>
## 1 A         6      6              7
## 2 B        13      8              8
## 3 C         9      7              7
## 4 D         6     12             11

```