前提
Rにてデータハンドリングをしています。
編集したいデータが以下のようになっています。
num:番号
name:名前
addr:住所
dt:年月日
match:変換表(後述)との対応列
R
1>head(data) 2 num name addr dt match 3 <dbl> <chr> <chr> <dbl> <int> 41 2010000001 山田 太郎 埼玉県所沢市 20100101 NA 52 2010000002 井上 花子 神奈川県横浜市 20100101 NA 63 2010000003 佐藤 広明 東京都中野区 20100101 NA 74 2010000004 高橋 健二 高知県高知市 20100101 NA 85 2010000009 江宮 真太郎 東京都調布市 20100103 NA 96 2010000009 江宮 正人 東京都調布市 20100103 NA 10
実現したいこと
dataのaddrの列で、一部市町村のみになっている行があるので、それ取り出し都道府県+市町村に変換したいです。
例:川崎市→神奈川県川崎市
また、変換のための対応表が別にあり、以下のようになっています。
before:変換前の市町村
after:変換後の都道府県+市町村
R
1>head(trans) 2# A tibble: 6 x 2 3 before after 4 <chr> <chr> 51 川崎市 神奈川県川崎市 62 名古屋市 愛知県名古屋市 73 摂津市 大阪府摂津市 84 大阪市 大阪府大阪市 95 京都市 京都府京都市 106 神戸市 兵庫県神戸市
ちなみにdataの5列目matchは、この変換表の対応列となっています。ほとんどはNAですが、市町村のみとなっている所のみ、この変換表の何行目に変換が書いてあるかの行数が記入してあります。
例:川崎市:1、神戸市:6
発生している問題・該当のソースコード
いかのコードを読み込んだのですが、変換した所以外がNAになってしまいます。他を保ったまま該当箇所のみ変換したいです。
R
1data <- data%>% 2 map_df( ~ {trans$after[match(data$addr, trans$before)]}) 3
試したこと
いかのコードも試したのですが、エラーが出ました。
R
1>for (i in 1:nrow(data)) { 2 if(is.na(data[i,5]) == TRUE){ 3 data[i,3] = trans[data[i,5],2] 4 } 5 } 6 7Error in `vectbl_as_row_location()`: 8! Must subset rows with a valid subscript vector. 9x Subscript `data[i, 5]` has the wrong type `tbl_df<match:integer>`. 10i It must be logical, numeric, or character. 11Run `rlang::last_error()` to see where the error occurred.
どなたか解決方法ご存じの方、よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/20 07:10
2022/12/20 07:43