質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

1回答

1325閲覧

【質問修正】Rを用いて、複数の住所を緯度経度のある住所録から抽出する。

haruake

総合スコア4

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

1グッド

0クリップ

投稿2021/05/22 04:37

編集2021/05/23 12:44

Rを用いて、住所から緯度経度情報を取得することを行っています。住所と緯度経度データは国土交通省から提供されているデータ(以降、「データ大阪府」)をcsv形式で保存しています。
前回、住所入力をすることで緯度列・経度列のデータを抽出したいという質問をし、解決いたしました。
その後、タイトルのとおり、複数の住所をデータ大阪から抽出しようとしましたが、1行目しかでませんでした。
全てのデータの緯度経度を表示するにはどうしたらよいでしょうか。

x<-read.csv("C://27_2019.csv")
head(x,3)

都道府県名 市区町村名 大字.丁目名 小字.通称名 街区符号.地番 座標系番号 X座標 Y座標 緯度 経度 住居表示フラグ 代表 フラグ 更新前履歴フラグ
1 大阪府 大阪市都島区 毛馬町三丁目 8 6 -141814.1 -44144.5 34.72071 135.5180 1
1 0
2 大阪府 大阪市都島区 毛馬町三丁目 7 6 -141711.3 -44137.4 34.72163 135.5181 1
1 0
3 大阪府 大阪市都島区 毛馬町三丁目 7 6 -141756.2 -44139.3 34.72123 135.5181 1
0 0
更新後履歴フラグ
1 0
2 0
3 0

y<-apply(x,1,function(xx){paste(xx,collapse = "")})
head(y,3)
[1] "大阪府大阪市都島区毛馬町三丁目86-141814.1-44144.534.72071135.51801100" "大阪府大阪市都島区毛馬町三丁目76-141711.3-44137.434.72163135.51811100"
[3] "大阪府大阪市都島区毛馬町三丁目76-141756.2-44139.334.72123135.51811000"

a<-read.csv("C://test.csv")
head(a,3)

住所

1 大阪府大阪市都島区毛馬町三丁目8
2 大阪府寝屋川市国松町9
3 大阪府泉南市樽井七丁目33

c<-as.matrix(a)
c

住所

[1,] "大阪府大阪市都島区毛馬町三丁目8"
[2,] "大阪府寝屋川市国松町9"
[3,] "大阪府泉南市樽井七丁目33"

target<-c
xnum<-grep(target,y)

警告メッセージ:
grep(target, y) で:
引数 'pattern' は 1 を超える長さなので、最初の要素だけが使われます

z<-x[xnum,9:10]
z

緯度 経度

1 34.72071 135.518

ここまでで結果が終わり、残り2行の住所の緯度経度がでませんでした。

cuttlefish44👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2021/05/22 21:39

追加の質問でのxはどこから出てきたのでしょうか。最初の質問とは違うデータセットを照合しようとしているように見えるので、データの内容いかんでは何もヒットしないこともあり得るだろうということしか、この情報からは判断できません。
haruake

2021/05/23 05:16

コメントありがとうございます。 最初の質問のxと追加のxは同じです。通してみてもらえるように、質問の内容を修正しました。 ご確認いただければ幸いです。
cwi

2021/05/23 13:26

grepに渡すpatternをひとつずつにしtest.csvの行数繰り返し処理するのでも結果は得られそうですが、それでは何か問題があるのですか。 xn <- c(); for (i in 1:length(c)) { xnum<-grep(c[i],y ,FALSE, TRUE, FALSE); xn <- c(xn, xnum);}#R1.6.2でも走る書式
haruake

2021/05/24 11:56

cwi様 コメントありがとうございます。 初心者のため、やりたいことはあるのですがなかなか学んできたこととつながりませんでした。 今後もよろしくお願いします。
guest

回答1

0

ベストアンサー

愚直に質問に回答するならば、grepのtargetに用いたい候補を or を意味する正規表現"|"でpaste利用することとなります。

r

1ans1 <- grep(paste0(target, collapse = "|"), y) 2ans1 3# [1] 1 283281 283344 283371 378933 378975

target数にもよりますが、コメントでcwi様が述べられているよう、targetについて繰り返し処理を行う方法もあります。

r

1xn <- c() 2for (i in 1:length(target)) { 3 xnum <- grep(target[i], y ,FALSE, TRUE, FALSE) 4 xn <- c(xn, xnum) 5 } 6xn 7# [1] 1 283281 283344 283371 378933 378975 8 9ans2 <- apply(target, 1, function(xx) grep(xx, y, FALSE, TRUE, FALSE)) 10unlist(ans2) 11# [1] 1 283281 283344 283371 378933 378975

ただそもそも話ですが、"住所と緯度経度データは国土交通省から提供されているデータ"なのであれば、
せっかく構造化されているのにpasteで非構造化している前処理自体がもったいない/無駄という印象を受けます。
私なら以下の様に、inner_join を用いてマッチするデータを抽出します。

r

1# sample_data 2target_df <- data.frame(都道府県名 = c("大阪府", "大阪府", "大阪府"), 3 市区町村名 = c("大阪市都島区", "寝屋川市", "泉南市"), 4 大字.丁目名 = c("毛馬町三丁目", "国松町", "樽井七丁目"), 5 街区符号.地番 = c("8", "9", "33")) 6 7library(dplyr) 8match_data <- x %>% 9 mutate(id = row_number()) %>% # 不要な気もしますが、何行目にマッチしたかを得るために行番号付与 10 inner_join(target_df, by = c("都道府県名", "市区町村名", "大字.丁目名", "街区符号.地番")) 11 12match_data$id 13# [1] 1 283281 283344 283371 378933 378975

投稿2021/05/24 03:29

編集2021/05/24 03:38
cuttlefish44

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haruake

2021/05/24 11:59

cuttlefish44様 コメントありがとうございます。詳細にご記載いただき大変助かりました。 質問することもハードルが高くなってきて、こんなこと聞いても大丈夫かな?と思っていました。 今後もよろしくお願いします。私も回答者として、コミュニティで役に立てるように頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問