データの内容
ファイル名が長いので、d_大学リスト1.xlsx
をdf1
、d_大学リスト2.xlsx
をdf2
と呼びます。
df1 <- read_xlsx("d_大学リスト1.xlsx")
df2 <- read_xlsx("d_大学リスト2.xlsx")
df1
とdf2
の内容は以下の通り。
北海道大学 |
北海道札幌市北区北8条西5丁目 |
北海道教育大学 |
北海道札幌市北区あいの里5条3-1-3 |
室蘭工業大学 |
北海道室蘭市水元町27-1 |
小樽商科大学 |
北海道小樽市緑3-5-21 |
帯広畜産大学 |
北海道帯広市稲田町西2線11 |
北見工業大学 |
北海道北見市公園町165 |
沖縄国際大学 |
沖縄県宜野湾市宜野湾2-6-1 |
沖縄大学 |
沖縄県那覇市字国場555 |
沖縄キリスト教学院大学 |
沖縄県中頭郡西原町字翁長777番地 |
沖縄キリスト教短期大学 |
沖縄県中頭郡西原町字翁長777番地 |
沖縄女子短期大学 |
沖縄県島尻郡与那原町東浜1番地 |
沖縄工業高等専門学校 |
沖縄県名護市字辺野古905 |
いわき短期大 |
私立 |
お茶の水女子大 |
国立 |
かなざわ食マネジメント専門職大 |
私立 |
くらしき作陽大 |
私立 |
こども教育宝仙大 |
私立 |
せとうち観光専門職短期大 |
私立 |
麗澤大学 |
私立 |
麻布大学 |
私立 |
龍谷大学 |
私立 |
龍谷大学短期大学 |
私立 |
LEC東京リーガルマインド大学院大 |
私立 |
SBI大学院大 |
私立 |
住所の分割
- Rで作業すると以下の数行で、
df1
にある住所の分割が完了します。分割された住所を含む新しいデータをdf1a
と呼びます。
vec_addr <- df1 %>%
select(学校所在地) %>%
pull()
df_addr <-
map_dfr(vec_addr, ~ separate_address(.))
df1a <- bind_cols(df1, df_addr)
kable(head(df1a))
北海道大学 |
北海道札幌市北区北8条西5丁目 |
北海道 |
札幌市北区 |
北8条西5丁目 |
北海道教育大学 |
北海道札幌市北区あいの里5条3-1-3 |
北海道 |
札幌市北区 |
あいの里5条3-1-3 |
室蘭工業大学 |
北海道室蘭市水元町27-1 |
北海道 |
室蘭市 |
水元町27-1 |
小樽商科大学 |
北海道小樽市緑3-5-21 |
北海道 |
小樽市 |
緑3-5-21 |
帯広畜産大学 |
北海道帯広市稲田町西2線11 |
北海道 |
帯広市 |
稲田町西2線11 |
北見工業大学 |
北海道北見市公園町165 |
北海道 |
北見市 |
公園町165 |
沖縄国際大学 |
沖縄県宜野湾市宜野湾2-6-1 |
沖縄県 |
宜野湾市 |
宜野湾2-6-1 |
沖縄大学 |
沖縄県那覇市字国場555 |
沖縄県 |
那覇市 |
字国場555 |
沖縄キリスト教学院大学 |
沖縄県中頭郡西原町字翁長777番地 |
沖縄県 |
中頭郡西原町 |
字翁長777番地 |
沖縄キリスト教短期大学 |
沖縄県中頭郡西原町字翁長777番地 |
沖縄県 |
中頭郡西原町 |
字翁長777番地 |
沖縄女子短期大学 |
沖縄県島尻郡与那原町東浜1番地 |
沖縄県 |
島尻郡与那原町 |
東浜1番地 |
沖縄工業高等専門学校 |
沖縄県名護市字辺野古905 |
沖縄県 |
名護市 |
字辺野古905 |
データの修正(df2)
df1
とdf2
のデータ数が異なっていることには気づかれましたか?
重複データ一覧(df2)
九州大学 |
公立 |
九州大学 |
国立 |
九州工業大学 |
公立 |
九州工業大学 |
国立 |
京都大学 |
公立 |
京都大学 |
国立 |
佐賀大学 |
公立 |
佐賀大学 |
国立 |
北海道大学 |
公立 |
北海道大学 |
国立 |
名古屋大学 |
公立 |
名古屋大学 |
国立 |
大分大学 |
公立 |
大分大学 |
国立 |
大阪大学 |
公立 |
大阪大学 |
国立 |
宮城教育大学 |
公立 |
宮城教育大学 |
国立 |
宮崎大学 |
公立 |
宮崎大学 |
国立 |
山形大学 |
公立 |
山形大学 |
国立 |
岩手大学 |
公立 |
岩手大学 |
国立 |
弘前大学 |
公立 |
弘前大学 |
国立 |
東京大学 |
公立 |
東京大学 |
国立 |
東北大学 |
公立 |
東北大学 |
国立 |
熊本大学 |
公立 |
熊本大学 |
国立 |
琉球大学 |
公立 |
琉球大学 |
国立 |
神戸大学 |
公立 |
神戸大学 |
国立 |
福岡教育大学 |
公立 |
福岡教育大学 |
国立 |
福島大学 |
公立 |
福島大学 |
国立 |
秋田大学 |
公立 |
秋田大学 |
国立 |
長崎大学 |
公立 |
長崎大学 |
国立 |
鹿児島大学 |
公立 |
鹿児島大学 |
国立 |
鹿屋体育大学 |
公立 |
鹿屋体育大学 |
国立 |
上記にリストされている学校は、全て国立 です。公立として登録されている部分を削除しましょう。
目視による確認が必要な場合もあります。(凄くイヤだけど…。)
名寄せ問題
- この課題は所謂「名寄せ問題」に近い問題です。
df1
とdf2
にある「学校名」が「完全一致」もしくは「限りなく一致」している学校をピックアップしましょう。
特定の課題にしか使えない解法ではなく、汎用性のあるアプローチ方法を考えましょう。後で楽ができるかもしれません。
df1b <- df1a %>% stringdist_left_join(
df2b,
by = "学校名",
max_dist = 1,
method = "jw",
distance_col = "myout"
) %>%
group_by(学校名.x) %>%
slice_max(n = 1, order_by = -myout, with_ties = TRUE) %>%
mutate(Prob_Matching = 1 - myout) %>%
select(-myout) %>%
ungroup()
df1b %>%
select(starts_with("学校名"), 設置区分, Prob_Matching) %>%
head() %>%
kable()
いわき短期大学 |
いわき短期大 |
私立 |
0.9523810 |
お茶の水女子大学 |
お茶の水女子大 |
国立 |
0.9583333 |
かなざわ食マネジメント専門職大学 |
かなざわ食マネジメント専門職大 |
私立 |
0.9791667 |
くらしき作陽大学 |
くらしき作陽大 |
私立 |
0.9583333 |
こども教育宝仙大学 |
こども教育宝仙大 |
私立 |
0.9629630 |
せとうち観光専門職短期大学 |
せとうち観光専門職短期大 |
私立 |
0.9743590 |
大阪女学院大学 |
大阪女学院大 |
0.952381 |
大阪女学院大学 |
大阪学院大学 |
0.952381 |
常磐会短期大学 |
常磐会短期大 |
0.952381 |
常磐会短期大学 |
常磐短期大学 |
0.952381 |
神戸女学院大学 |
神戸女学院大 |
0.952381 |
神戸女学院大学 |
神戸学院大学 |
0.952381 |
西南女学院大学 |
西南女学院大 |
0.952381 |
西南女学院大学 |
西南学院大学 |
0.952381 |
西日本工業大学 |
日本工業大学 |
0.952381 |
西日本工業大学 |
西日本工業大 |
0.952381 |
学校名.x
の中に「頭から連続した」学校名.y
の文字列が含まれるかをチェックしましょう。例えば、「西南女学院大学」の中に「西南女学院大」は含まれますが、「西南学院大学」は含まれません。つまり、正しくない、削除すべき組み合わせは、以下の通りとなります。
大阪女学院大学 |
大阪学院大学 |
常磐会短期大学 |
常磐短期大学 |
神戸女学院大学 |
神戸学院大学 |
西南女学院大学 |
西南学院大学 |
西日本工業大学 |
日本工業大学 |
分析用データの完成
df1f <- df1e %>%
select(-学校名.y, -Prob_Matching, -学校所在地) %>%
rename(学校名 = 学校名.x)
df1f %>%
head() %>%
kable()
いわき短期大学 |
福島県 |
いわき市 |
平鎌田字寿金沢37 |
私立 |
お茶の水女子大学 |
東京都 |
文京区 |
大塚2-1-1 |
国立 |
かなざわ食マネジメント専門職大学 |
石川県 |
白山市 |
横江町5250 |
私立 |
くらしき作陽大学 |
岡山県 |
倉敷市 |
玉島長尾3515 |
私立 |
こども教育宝仙大学 |
東京都 |
中野区 |
中央二丁目33番26号 |
私立 |
せとうち観光専門職短期大学 |
香川県 |
高松市 |
屋島西町2366-1 |
私立 |
df1f %>%
tail() %>%
kable()
麗澤大学 |
千葉県 |
柏市 |
光ケ丘2-1-1 |
私立 |
麻布大学 |
神奈川県 |
相模原市中央区 |
淵野辺1-17-71 |
私立 |
龍谷大学 |
京都府 |
京都市伏見区 |
深草塚本町67 |
私立 |
龍谷大学短期大学部 |
京都府 |
京都市伏見区 |
深草塚本町67 |
私立 |
LEC東京リーガルマインド大学院大学 |
東京都 |
千代田区 |
神田三崎町2-2-15 |
私立 |
SBI大学院大学 |
東京都 |
港区 |
六本木1-6-1 泉ガーデンタワー21階 |
私立 |
df1f %>%
tabyl(設置区分) %>%
adorn_totals() %>%
kable()
公立 |
120 |
0.1017812 |
国立 |
137 |
0.1162002 |
私立 |
922 |
0.7820187 |
Total |
1179 |
1.0000000 |
例題
三重県にある大学等を市町村ごとにソートしてリストしてください。
df1f %>%
filter(prefecture == "三重県") %>%
arrange(city, 設置区分) %>%
kable()
皇學館大学 |
三重県 |
伊勢市 |
神田久志本町1704 |
私立 |
近畿大学工業高等専門学校 |
三重県 |
名張市 |
春日丘7番町1番地 |
私立 |
ユマニテク短期大学 |
三重県 |
四日市市 |
南浜田町4-21 |
私立 |
四日市大学 |
三重県 |
四日市市 |
萱生町1200 |
私立 |
四日市看護医療大学 |
三重県 |
四日市市 |
萱生町1200番地 |
私立 |
三重県立看護大学 |
三重県 |
津市 |
夢が丘一丁目1-1 |
公立 |
三重短期大学 |
三重県 |
津市 |
一身田中野157 |
公立 |
三重大学 |
三重県 |
津市 |
栗真町屋町1577 |
国立 |
高田短期大学 |
三重県 |
津市 |
一身田豊野195 |
私立 |
鈴鹿工業高等専門学校 |
三重県 |
鈴鹿市 |
白子町 |
国立 |
鈴鹿医療科学大学 |
三重県 |
鈴鹿市 |
岸岡町1001-1 |
私立 |
鈴鹿大学 |
三重県 |
鈴鹿市 |
郡山町663-222 |
私立 |
鈴鹿大学短期大学部 |
三重県 |
鈴鹿市 |
郡山町663-222 |
私立 |
鳥羽商船高等専門学校 |
三重県 |
鳥羽市 |
池上町1-1 |
国立 |
公立大学等が複数ある市町村+区は、全国で幾つありますか?
df1f %>%
filter(設置区分 == "公立") %>%
count(city) %>%
filter(n > 1) %>%
arrange(desc(n)) %>%
mutate(行番号 = row_number()) %>%
relocate(行番号) %>%
gt()
1 |
神戸市西区 |
4 |
2 |
秋田市 |
3 |
3 |
会津若松市 |
2 |
4 |
前橋市 |
2 |
5 |
品川区 |
2 |
6 |
大分市 |
2 |
7 |
宮崎市 |
2 |
8 |
岐阜市 |
2 |
9 |
川崎市幸区 |
2 |
10 |
旭川市 |
2 |
11 |
津市 |
2 |
12 |
滝沢市 |
2 |
13 |
磐田市 |
2 |
14 |
米沢市 |
2 |
15 |
那覇市 |
2 |
16 |
長久手市 |
2 |
17 |
青森市 |
2 |
18 |
静岡市駿河区 |
2 |