x =
'Id 省份 a1 a2 a3
1 北京市 是 否 是
2 北京市 否 是 是
3 北京市 否 否 否
4 北京市 是 否 是
5 上海市 否 是 是
6 上海市 否 否 否'
library(tidyr)
test1 = read.table(text = x, header = T)
test1[, -1] %>%
pivot_longer(
cols = a1:a3,
names_to = "field",
values_to = "value"
) %>%
pivot_wider(
names_from = c(field, value),
values_fn = length,
values_fill = 0
) -> result
print(result)
#> # A tibble: 2 × 7
#> 省份 a1_是 a2_否 a3_是 a1_否 a2_是 a3_否
#> <chr> <int> <int> <int> <int> <int> <int>
#> 1 北京市 2 3 3 2 1 1
#> 2 上海市 0 1 1 2 1 1