2020年08月06日(木)

広島に原子爆弾が投下された日

読んで字の如し。平和を祈るばかり。

Rmarkdownで書く論文原稿を行番号つきダブルスペースにするには

Stackoverflowによれば、ヘッダに記述を足せばいいみたい。すなわち、

header-includes :
 \usepackage{setspace}
 \doublespacing
 \usepackage[vmargin=1in,hmargin=1in]{geometry}
 \usepackage{lineno}
 \linenumbers

と、日付の下あたりに書けばいい。

タイ都県別労働力統計ファイルを読み込む(その1)

いろいろあって手がついていなかった標題に、ようやく手がつくように。ダウンロードした都県・四半期別労働力統計をRで読み込みTidyなデータセットをつくることを目指す。書いたコードはGithubにおいた。解析はデータセットをつくってから。

なんとなく予想してはいたけれど、やはり問題山積。見つかっただけで、以下に示す問題があるだろう。

年次がそろわない

都県毎にデータがある年次が異なる。都県分割された(これはこれで悩ましい)ことが原因であるケースもあれば、原因不明なことも。データを読み込むときにはさしたる問題にはならない。が、分析するときには問題になることが予想される。都県分割なんてどうしていいやら妙案が浮かばない。市町村合併後のデータ処理に学ぶところはあるかも。

期待したデータがない

ダウンロードした都県・年別Excelファイルを開くと、大地域別(全国・BKK、北部・南部・中部・東北部)データが入ったファイルだったというケースが散見される。NSOにデータを請求するか、NSOに出かけて直接データを打ち込まないといけないだろう。けっこうたくさんあるから、後日一覧をつくっておくことにする。

文字化けしたファイルがある

理由不明。文字コードをUTF-8に変換しても直らない。期待したデータがないケースと同じように対処するしかなかろう。同様に一覧をつくる。

都県・年毎にフォーマットが異なる

最大の難問。フォーマットが異なるから、読み込むためのコードをすべて使い回せない。部分的にせよ、フィットするように書き換えないといけない。悩ましいことに、フォーマットが何種類もある。すべて読み込ませてみないことには、フォーマット種数や読み込み可能かどうかわからない。今後、新たなフォーマットが現れるかもしれない。といって、読み込みはなんとしても自動化したい。さしあたって方針は以下に示すとおり。

  1. ある都県について読み込み用関数を作成しつつ、フォーマットを同定する。
  2. フォーマット数が確定されたら、フォーマットを評価する関数をつくる。
  3. 2.と1.とを合体、読み込み自動化する関数を作成する。

ファイルはすべてNSOが提供する都県別データダウンロードページからダウンロードした。すべて同じフォーマットでDBがファイルを自動生成すると予想してたけれど・・・。

Excelファイル内にリンクが埋め込まれており、RがExcelファイルを読み込めない

これも数件ある。ファイルをひらいて、リンクをたどろうとたどれない。リンクフィールドだけが残存しているみたい。リンクが埋まっていると、Rは破損したファイルとみなすみたい。該当するファイルはあまりない。が、あると処理が止まる。見つけ出して個別にファイルを修復する。なかなかExcelファイル自体をいじらずにRで読み込み自動化するには至らない。

マルチバイト文字由来のエラーあり

RStudio文字コード設定はUTF-8。なのでUTF-8で書いたタイ文字はRStudio上に表示される。しかし、処理する途中で文字コードに置換されたり母音字がなにか悪さする結果、エラーが発生することがある。

とど

  • 漂着ゴミ執筆:とりあえず初稿はできた。論理もおおむねよさげ。記述に至らない点が散見される。加筆しましょう。考察に付する地図も忘れずに。

2020年08月06日(木)

釣り道具レビュー:Jackal GSW-C66ULとシマノバルケッタ300HG

先月購入して8月1日に使った上記感想。

  • 軽い:義父や長男がタイラバするときに都合がよい。80gから100gのタイラバをつけて一日中タックルを振り回しても問題なさそう。
  • 柔らかめの竿:ベイトをつけやすいから、落とし込みにも向いている。
  • 1号で300mくらい巻くカウンタ付きリール:PEは避けがたく高切れする。現地で巻き込んでもいいけれど、高切れしてもなお糸に余裕があれば、その日はとりあえずしのげる。200m巻は淋しいけれど、300m巻いてあれば十分。カウンタはタチウオジギングやイカメタルをするときに便利。
  • 廉価:釣具店プライベートブランド竿は安価。これらは残念ながら上記を満たさなかった。やや重く、総じて硬い。硬いから釣りやすいしフッキングも楽だったけど、釣り味はいまひとつだった。といって、高価な道具は買えない。
  • 格好いい:なににつけ道具は格好いいほうがいい。

を基準に選んだ。ロッドリールも総じてよい買い物だった。

ロッド

軽い。とにかく軽い。黒地に蛍光緑ガイド巻糸が映える。

短い。1.98m。船上で取り回すにはとても便利。釣った魚を取り込むときの始末もオマツリをほどくにも都合がいい。小さなトラブルを避けられる長さは素敵。持ち運びにも便利。中継ぎで仕舞寸法は1m程。室内でも自動車内でも、風呂場で真水を掛けて洗うときもとっても便利。

柔らかい。穂先はきわめて柔らかい。ULとはいうけれど、他社だとSULだとおもう。バットも柔らかい。結果、魚がかかると、竿全体が曲がる。タイラバロッドというよりジギングロッドに近い。だからといって釣りに不安はない。バットパワーは50cmあるタイがかかっても十分。不思議な粘りがある。小さい魚だとそれなりにしか曲がらない。ただし、タチウオ用100gジグをあおるには、少々柔らかすぎる気がする。特にジグが流されて大きめにあおりたくなる時、より硬い竿を使ったほうがよさそう。

タイラバ80gで朝7時30分から15時まで釣った。タイラバを上下させるには支障なし。柔らかすぎるからシステムを重く感じるかとおもいきや、そうでもなかった。PEが海中に没するときにガイドにひっかかるショックを吸収してくれてうれしい。

リール

軽い。単体で200gを切ってる。高級リールもいいけれど、軽いほうが1日頑張れる。格好もいい。電池を自分で交換できるところも素敵。

糸巻き量は正確。下巻きなしでPE1.5号が240m巻けた。説明書には200mと書いてあるからやや多めには巻けるけれど、これはリーダーを巻く余裕+\(\alpha\)と考えるべきでしょう。巻いてから巻いた長さをリールに申告するシマノ式カウンタ設定もよい。ダイワはあらかじめ糸太さを指定する方式だから、プリセットにない糸太さだと手がつけられない。

巻き上げ速度が早い。ギヤ比7.8は伊達じゃない。あっという間に仕掛けが水面までやってくる。超スロー巻きはよほどスローに巻かないといけない。パワーもあって、魚も確実に水面までやってくる。

ドラグは緩い。ほんの数ミリ緩めただけで、かなり糸が出る。締め込んだドラグでも、手で引くとPEラインが出る。大物指向なんだろうか。硬めなドラグが必要な場合、ダイワ製タナセンサーがいい。ドラグ音は派手。船に響きわたる。釣れたことが明瞭であるから、夜釣りには使い勝手がいい。ドラグがゆるい割に、スプールのブレーキはきびしい。仕掛けが落ちてゆく速度はゆっくり目。

タイ都県別労働力統計ファイルを読み込む(その2)

きょうは比較的最近のフォーマットに近い方に挑戦。コードは古めなデータを読み込むコードより短く済みそう。難点は古めのフォーマットと異なり、属性が行方向に並ぶこと。

行列方向が異なることは、転置行列っぽく回転させて古めのフォーマットに合わせればいいことに気がついた。そのままでもいいけれど、属性名を置き換えるときに苦労する。なにしろ属性名は年別に多少異なるから正規表現で置き換えたいけれど、Rには後方参照する正規表現が薄い。タイ文字は妙なところに変なコードが入っているらしく、削除したいときに数文字後から削除する必要があるなどするから、正規表現における条件設定にも手こずる。Tidyverseを指向する以上、列名で属性名が処理できれば楽もできる。

つづきはまたあした。明日は大きな仕事があるから。

2020年08月12日(水)

タイ都県別労働力統計ファイルを読み込む(その3)

まだまだ苦労がたえませぬ。

第一、ハイフンというのかダッシュというのかマイナスというのか、記号が混ざっている。NAを表現する記号と考えられる。NSOによる資料によれば、NAに該当する記号らしい。ゆえに、同記号をNAに置き換える必要がある。

第二、百分率表示が加わった。百分率は原数値があれば計算できるから、読み込む必要はない。が、入っている。読み込んでも仕方がないから、読み込みたくない。当初、100より小さい値を含む系列を削除することで百分率がある部分を読み込まないことにした。が、原数値に100より小さい系列(2544年第3四半期女性季節労働者数)があることがわかった。この手は使えない。なにか別の方法を用いて百分率部分を削除する必要がある。

手っ取り早いのは、百分率があるデータセット下半分をカットしてしまうことだろう。しかしそれでは芸がない。原数値は下半分よりもやや下部にもある。dplyr::rownames_to_column()からdplyr::sliceを使って必要箇所を取り出そうにも、原数値と百分率とで項目名が変わらない。なんということでしょう~。

結局、双方同時に解決することにした。

  • ร้อยลを含む行番号を取得する
  • “-”をNAに置き換える

タイラバ釣り準備

長男と週末に出かける予定。目下、陸上海上も天候はよいみたい。準備する物品は以下に示すとおり。

  • タイラバ:60・80・100・120g各1つ。色はオレンジ。多少色が違っても構わない。普通タイプは予備品を出す。
  • タイラバ付属品:タイラバ用針(M)、キャップ(M)、スカート(黒いドット)、ネクタイ(オレンジとスルメ色)。
  • 容器:100円ショップで売っているタッパーウェアとツボ。上記が入ればいい。
  • 飲料:3リットル。うち2リットルは茶、1リットルはポカリスエット。

2020年08月12日(金)

タイ都県別労働力統計ファイルを読み込む(その4)

4つある明らかにおかしなデータを削除した。文字化けしているデータセットが3つ、県が属する地方のデータが入っているデータセットがひとつ。これらを除けば、2つ作成したいずれかの関数でだいたい読み込めるようになった。残る課題は、データセットを評価していずれかの関数に渡す関数を作ること。これができれば、全ファイルを自動的に読み込ませることもできるでしょう。

おかしな要素は、どこにあるかわからない。安定しない変数名、文字列を区切る空白が1つあったり2つあったりする変数名、無意味な文字列が入力された列、合計であっても100パーセントにならない百分率表示、きりがない。

  • 安定しない変数名:総人口を表現する変数名がยอดรวมประชากรであったりยอดรากรであったりと揺れる。百分率表示もร้อยลと揺れる。なぜか近年作成されたデータセットは、百分率箇所が明示されない。前者については含まないデータセットがあるが、他変数から計算可能。後者はそもそも不要。原数値があれば計算できるから。後者は削除する。百分率はたいてい原数値よりも下に配置される。原理的に合計値は100になる。これら条件を用いて百分率表示部が開始される位置を見つけられるならば、削除は容易。
  • 合計であっても100パーセントにならない百分率表示:元データを収納するExcelファイルが原数値を参照しながら百分率を計算する。原数値が合わなければ当然百分率も異なる。異なるといって、さほどに大きく異るようでもない。99.99…%であるそうです。もともとの原数値差異はごくわずかであろう。繰り返すが、百分率は使わない。削除する。
  • 文字列を区切る空白が1つあったり2つあったり:15歳を15 ปีと15 ปを使って表現している(空白が挿入される数が異なる)。必要なのは15という情報。15だけ使う。空白がいくつあっても問題ない。
  • 無意味な文字列が入力された列:なぜかある。ならば必要な列だけ取り出せばよい。必要な列は1列目から4列目であることを利用すればたやすい。

ということで、データセット自動読み取りにあたって、

  1. 百分率箇所を抽出する:百分率表示が全変数において100となる箇所を抽出する。100にならない箇所でも検出できるよう、丸めてから検出する。キモになるコードは以下に示す通り。そのまま100と指定すると、100を含む数値が抽出されてしまう。100で終わると指定することがポイント。100ではじまるとより厳しく書いてもいいでしょう。whichは行番号を取得するために使う。
    RowNumberForFilterStart <- 
          which(
            stringr::str_detect(round(as.numeric(ReadFile$Total)), "100$" ) 
            & stringr::str_detect(round(as.numeric(ReadFile$Male)), "100$" ) 
            & stringr::str_detect(round(as.numeric(ReadFile$Female)), "100$" )
            )
  1. 15歳以上/未満データは使わない:15を含む変数を削除する。キモになるコードは以下に示すとおり。!greplで抽出するあたりがポイント。tidyverseに仕上げて、高速化を図る。
  dplyr::filter(.,  !grepl("15", Status)) %>% 
  1. 必要な列だけ抽出する:1列目から4列目まで抽出する。

ことにする。

いやー、正規表現って大事。

タイラバ釣り準備

だいたいおわった。あとは飲み物を購入して凍らせるだけ。1名あたり4リットルか5リットルを用意する。1リットルはポカリスエットで。ひんやりさせるために、水を入れた0.5リットルペットボトルもあったほうがいい。

2020年08月25日(火)

タイ都県別労働力統計ファイルを読み込む(その5)

横長データはなんとか処理できた。およそ1,000つ、データを読み込めた。400強は横長データに見えるが実際は読み込めない横長データだった。全部で7,000弱あるから、\(\frac{1}{5}\)が終わった。読み込めなかったデータの特徴は、以下に示すとおり。

あるデータが横長か縦長かを判定するために、ファイルを読んで

  • 謎の文字列:見た目にわからないほど右奥列に、謎の文字列が並ぶ。なぜそこに文字列がかくも長く挿入されたか、見当がつかない。あっさり削除。
  • 謎の空白列:たいていH列に空白列が入っている。コードを書いて除去してもいいけれど、数はそれほどないから手作業で除去する。
  • 謎のシート:たいてい、必要なデータはもっとも左側にあるシートにある。それゆえ、Rコードはもっとも左側にあるシートを読み込めと指定する。しかし、もっとも左側に謎のほぼ空白シートが挿入されることがある。当然、エラーが出る。自動的に見つけることも難しい。幸い、さほど多いわけでもないから、手作業で削除。
  • 文字化け:5つ程度見つけた。めったにない。これも個別に削除。
  • あと少しフォーマット:横長データだけど、最後の変数(15歳未満人口)がないことがある。比較的最近のデータにありがちだけれど、こういうデータセットは読み込まない。
  • 少々瑕疵があるデータ:その他色々。パターンはそのうち紹介します。ほんと、いろいろありますよ。データベースからダウンロードしてきただけなのに。

イカメタル釣行の記

2020年8月22日(土)夕方から夜にかけて、イカメタルに出かける。16杯釣れた。船は誠丸(野母崎)、料金は10,000円/名。天候は晴れ。風は微風。中潮だが大潮に近い。

潮流は割に強い。魚探で85mと表示されるが、90m前後は糸が出る。メタルスッテ30号を使っても流された。落とすたびに糸が出るから、2回に1回は水面まで仕掛けを上げる。そのうえ仕掛けが絡む。お互い様とはいえ、自身が使う仕掛けがほぼ直立することを考えると、時間を失うことがくやしい。

道具

イカメタル専用ではなく他用途に兼用できる道具を心がける。チープフィッシングバンザイ。

  • 竿:ジャッカル製GSW-C66UL。タイラバ兼用。周囲はイカメタル専用ロッドで気合が入る中、なんでもロッドで参戦。イカメタルロッドはテーパーが強い先調子。わがなんでもロッドはテーパーは強くない。胴調子気味。ジギングロッドによく似る特性。やわらかいから、いろいろなショックをよく吸収してくれる。その分、誘いも大きめにしないとスッテにアクションが伝わらない。キビキビした誘いも難しい。穂先が折れるかもしれないから、あまり激しいアクションはしないほうがいい。小さな誘いやキビキビしたロッドアクションなら、ポイントタイラバロッドを使ったほうがいいだろう。オモリグも同様。
  • リール:バルケッタ300HG。右巻き。ハイギヤタイプで巻速度が速い。タナを探る釣りには大変便利。ドラグは一旦締め付けた後、さっとゆるめる。竿が柔らかいから、アワセ時にイカ足がちぎれる心配はない。巻き上げるときの引きを楽しめる程度にゆるめておけばよい。あまり緩めると外れてしまう。終盤に引きを楽しもうとゆるめたら、案の定外れた。誘いを考えれば、左巻きがほしいが先立つものがない。右巻きで耐える。
  • PE:1号4本編み。シマノ製。お手頃な糸で大変よろしい。8本撚りでしなやかである必要はなさそう。イカメタル終了後はタイラバやエギング用に使う。ラインリサイクラーは大変便利と知る。
  • リーダー:4号。タイラバ兼用。切られるとおもって5ヒロつなぐ。案の定、からんだときに1ヒロくらい切った。
  • スッテ:メタルが赤黄、ドロッパーは赤緑。定番すぎるがこれがよく釣れた。赤緑はイカ活性が低いときに向いているとか。

補遺 Jackal GSW C-66UL

いつぞや書いた使用感であるけれど、イカメタルに使った後の感想。

  • やわらかく胴調子気味。ULというだけあって、とにかくやわらかい。この柔らかさが、アワセショックを吸収してくれるんでしょう。イカ足がちぎれることは一回もなかった。25号まではメタルスッテを軽くしゃくれる。30号だと少々重く感じるが、大きめに竿を上下させれば誘いに支障はない。35号から先はわからない。たぶん重いだろう。
  • 敏感:イカのアタリが手元まで伝わる。やわらかいが感度は十分。釣れたときはもれなく穂先と手元と双方でイカのアタリと重みを感じてアワセできた。数は釣れなかったけれど。次はもっとたくさん釣りたい。
  • 握りやすい:把手に巻かれたスポンジは固め。竿尻は長め(近頃短めな竿が多くないですか)。脇にはさんで誘いをかけるには便利。長い時間握っていても疲れない。欲を言えば、指かけがもう少し大きければいいなぁ。
  • 単純な構造と形状:格好いいだけではなく掃除しやすい。謎の曲面もなければ意味不明な溝もない。帰ったら水を掛けて拭いて陰干しすればOK。
  • 格好よい:青い竿尻は印象的。穂先はガイドを巻く糸が蛍光色で夜でもアタリがわかりやすい。金属巻やカーボンテープ巻はない。高級感はない。しかしわたしにはシンプルなこのロッドが格好よく見える。
  • 安い:15,000円。ダイワやシマノでタイラバロッドを買ったらこうはいかない。ましてイカメタル専用ロッドとなると高い。この値段で買えないこともないが、オモリ負荷が小さい気がする。お手軽なもあるけれど、どうも全般に硬い気がする。
  • 仕舞寸法が短い:1m前後。車に積むときも家でしまっておくときも、これは大変すばらしい。船と乗り降りするときも引っ掛けなくて便利。1本ものやバットジョイントだと、どうしても集魚灯やワイヤーにひっかかる。

硬い竿(GSW-C58M)もある。ジグを250gまで使えるらしい。店先で120gタイラバを下げても、あまり曲がらない。ポイントタイラバロッドよりも更に硬い。使い所に悩む竿。

イカメタル専用ロッドと比べると、テーパーや穂先材質が異なるなど多々あろう。しかし結構釣れる。イカメタルもタイラバも兼用できる。落とし込みにもいい。わたしにはこのなんでもロッドが極めて優秀。

メタルスッテ+ドロッパーを使った釣り方

  1. タナまで仕掛けを下ろす:船長が指示したタナまで下ろす。たいていは底取りから。今回は45-15m界隈が釣れた。
  2. 誘う:ロッド特性を考えて、1m程度竿を上げてテンションを保ちながら2回上下。爾後3秒から5秒待つ。これを2回繰り返す
  3. ワンピッチジャークでタナ変更:1mないし2m仕掛けを上げる。このとき、ワンピッチジャークがよく効く。タナにたどりついたら、そのまま3秒から5秒待つ。あとはこの繰り返し。時々水面まで上げて仕掛けを確認する。

釣れたイカはザルでスミを吐かせてから傘袋に。クーラーボックス内には、100均グッズでつくった重ねられるザルを重ねて、水がきれるようしてイカを乗せる。イカの上に新聞紙を敷いて、ジップロックに小分けに入れた氷を乗せる。余ったスペースにも袋に入れた氷を配置する。

そうそう、水分補給大事。乗船中に麦茶1.5リットル、ポカリスエット1.0リットルを消費した。

イカメタル、ハマりました。家族も喜んでくれる期間限定大人の夜遊び。