Я ищу обобщенный метод c, чтобы иметь дело с ситуациями, когда требуются комбинации, но когда данные не всегда соответствуют предположениям функции combn
.
В частности, у меня есть План данных членов Конгресса и их комитетов. Чтобы исследовать эту сеть политиков, я хочу связать (то есть создать связи между ними) любых членов, принадлежащих к одним и тем же комитетам.
Данные выглядят следующим образом:
name_id assignment
A000374 Agriculture
A000370 Agriculture
A000055 Appropriations
A000371 Appropriations
A000372 Agriculture
A000376 Foreign
Итак результирующие сетевые данные должны выглядеть следующим образом:
from to committee
A000374 A000370 Agriculture
A000055 A000371 Appropriations
Проблема в том, что мой код (ниже) выдает ошибку, потому что не всегда есть пары (команда ncombn в коде, который идентифицирует такие случаи). правильный подход, и если да, то как создать команду, которая отвечает за эту проблему в целом?
Вот мой код, в настоящее время:
library(RCurl)
x <- getURL("https://raw.githubusercontent.com/bac3917/Cauldron/master/cstack.csv")
cstack <- read.csv(text = x)
# split the string into two columns that represent name_id and committee assignment
cstack <- cstack %>% separate(namePaste, c("name_id","assignment"))
# use combn and dplyr to create pairs (results in error)
edges<-cstack %>%
group_by(assignment) %>%
do(as.data.frame(t(combn(.[["name_id"]], 2)))) %>%
group_by(V1, V2) %>%
summarise(n( ))