对于一个研究项目,我想在一个高度分散的政党系统的面板数据集中,根据包含政党组成的联盟的字符串变量,形成两组(例如,左/右),如第(3列)所示)的以下简化示例:
parties <- c("A","A", "A", "B", "B", "B")
year <- c(2000, 2001, 2003, 2001, 2002, 2003)
coalitions <- c("A, C, D", "A,C", "A,E", "B,F,G", "B,G", "B,H")
d <- data.frame(parties,year,coalitions)
我有两个定点,例如甲方(左)和乙方(右)。为了接收两个组,我想有一张桌子告诉我这两个方A和B与哪个方组成联盟,在我的示例中:
A组:(A,C:2),(A,D:1),(A,E:1)
B组:(B,G:2),(B,F:1),(B,H:1)
这将允许我设置一个阈值(如果很少有与A和B组成联盟的政党)。有谁能帮我解决一个不需要(由于数目众多)的问题,理想情况下仅基于第(3)列就需要A和B以外的其他各方的名称?提前非常感谢!
答案 0 :(得分:3)
library(tidyverse)
d %>%
separate_rows(coalitions) %>%
filter(parties != coalitions) %>%
count(parties, coalitions)
# # A tibble: 6 x 3
# parties coalitions n
# <fct> <chr> <int>
# 1 A C 2
# 2 A D 1
# 3 A E 1
# 4 B F 1
# 5 B G 2
# 6 B H 1