Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

issue-codeからエッジリストを抽出する

はじめに

NOMINATEのデータって実はスコアだけじゃなくてissue-codeも付いてるんですよね。
しかもこいつ1つの法案に対して複数のissue-codeが与えられていたりするので、同じ法案に付されたissue-codeを「繋がっている」扱いにしてネットワークデータを作成してみたいと思います。
データ元:
Lewis, Jeffrey B., Keith Poole, Howard Rosenthal, Adam Boche, Aaron Rudkin, and Luke Sonnet (2020). Voteview: Congressional Roll-Call Votes Database. https://voteview.com/

データを編集

読み込み

library(tidyverse)
rollcalls <- readRDS("data/NOMINATE/rollcalls_all.rds") 
#元データが死ぬほど重いのでrds化してあります

差し当たり上院に提出された法案について見て行きたいと思います。

#下院を会期別にみてみる
con <- 93 #仮に93議会についてやってみます
RC_year <- rollcalls %>%
  filter(congress==con, chamber=="Senate") %>% #93議会の上院を抽出
  select(issue_codes) #issue codeを抽出

df <- list()
for(i in 1:nrow(RC_year)){
  if(length(RC_year$issue_codes[[i]]) >= 2){
    df <- c(df, list(RC_year$issue_codes[[i]]))
  }else{}
}

dataframe <- matrix(NA, length(df), 2)
colnames(dataframe) <- c("code1", "code2")
for(j in 1:length(df)){
  dataframe[j,1] <- df[[j]][1]
  dataframe[j,2] <- df[[j]][2]
}
topic.e <- as_tibble(dataframe)

なんかもっと上手いことできる気がする。
ちなみに重み付けを処理しようとすると以下のようになります。
//なんでか知らんけど重み付けの行をigraphに読ませられてないので読ませたら加筆します。
//誰か教えてくれ(投げやり

topic.e <- topic.e %>%
  group_by(code1, code2) %>%
  summarise(multi=n())

library(igraph)
g <- graph.data.frame(topic.e[1:2],directed=F)

これをプロットしてみるとこんな感じの図ができます。
Rplot_93Senate_issuecodes.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away