ggplot2 development version をインストール

ggplot2 による地図を描画するため、現バージョンにバンドルされていない geom_sf() が必要なので、development version をインストールしたい。方法は、こちらに記述されているが、R console から次のコマンドを実行する。

ところが、これがうまく行かない。
途中、2回もRtoolsのインストールが走り、延々処理した揚句の失敗が痛い!
一旦は、インストールを諦めたものの、どうしても欲しい物は欲しいのである。

思い直し、Rtoolsの何たるかものかを調べることから再開。
Rtoolsとは、Windows 環境でパーッケージをソースからインストールする際に
「C++でコンパイルするため,C++コンパイラが必要で,WindowsではRtoolsを使う」
とのこと。

Rtoolsのインストール手順は以下の通り。
(1) 既存のRtoolsをアンインストール
(2) Building R for Windows からRtoolsをダウンロード
(3) ダウンロードした RtoolsXX.exe(XX:バージョン)をダブルクリック
(4) R console から次のコマンドを入力して、gcc がインストールされていることを確認する。

以下のようなメッセージが表示されれば成功。

これで、Rtools のインストールが完了したので、先程のコマンドを実行する。

コンパイルが走るので、時間が掛るが辛抱強く終わるのを待つ。
終ったら、バージョンを確認する。

メデタシ、メデタシ?

Rで地図を描画する – mapview

Ubuntu 17.10 へインストール

Windows環境では、問題なくインストールできたが、
Ubuntuでは、延々処理した揚句、インストール失敗。
そこで、その手順を示す。
(1) libcairo2-dev のインストール
次にインストールする svglite に必要なため、最初にこれをインストールする。

(2) svglite のインストール
Rコンソールから

(3)mapview のインストール
Rコンソールから

以上

Rで地図を描画する geom_sf()

Rでshapefileを入力して、地図を描画できると言うことで、いろいろ試してみるも、
問題山積して、収拾ががつかない状況にある。
しかし、何とか解決したものだけでもメモにして残しておく。
環境は、windows7、R 3.4.4(2018/4/6時点の最新版)

geom_sf()がインストールできない

shapefileを入力するのに、従来は maptools の readShapePoly 等を使用するわけだが、現在は

と、警告が発せられる。

Googleで調べてみると、将来の方向性として sf パッケージが良さそうなので sf をインストールしてみる。
RでGISをやるときにはsfパッケージ、という世の中になるらしい。に詳しい説明があります。)
これによって、shapefileは首尾よく入力できるようにはなった。が、sf::st_read()で入力したデータは fortify でのフォーマット変換ができないので、geom_sf()を使用することになる。

これで plot を使用すれば地図の描画はできるが、ggplot2 を使用する場合は、geom_sf()を使用しなければならない。
geom_sf()は、ggplot2 の関数だが、バージョン2.2.1にはこれがバンドルされていないと言う問題がある。
インターネットを探せば、上位にこのインストールの件についての質問が為されているが、答えは何時も

で、インストールせよとのご託宣。種々調べたが、これ以外には方法がない模様。

しかし、試しに windows 環境で実行するも、結果的に失敗に終わる。断定はできないが多分無理。
Windows な人の結論、
次期バージョンを待とう!

(インストールはこちらをご覧ください。)
windowsは見捨てて、guest os の Ubuntu 17.10 で再挑戦。インストールのコマンドは全く同じ。
こちらは、問題なくインストール完了!
ggplot2 2.2.1.9000(変なバージョン番号だが問題はなし)

(「RでGISをやるときにはsfパッケージ、という世の中になるらしい。」によれば、Ubuntu 16.10 以降でなければ、いろんな問題があるらしいので注意してください。)

reshape2とtidyr

例えば、ggplot を使用して次の様な「男女別の人口推移」のグラフを作るものとします。

総務省の人口統計等からデータは入手できます。
ダウンロード後、Excelなどで次のように編集して、csv形式でとして保存するのが一般的な方法かと思います。

単純な表なので簡単に作れますが、面倒と思う人のため、次にデータを用意しておきました。

データの構成は、このように作るのが一般的と思いますが、これを上のような棒グラフでプロットするのは大変困難です。
x軸(年次)が共通で、y軸が各々男と女を別個にプロットすると重なり合ってしまうためです。回避手段(例えば、dodge を使うなど)は有るかもしれませんが、私の力量では無理です。
この問題の解決策は、データを次の通りに変更すること(が、一番手っ取り早い手段)です。

つまり、年次別に男と女の2行にしてにデータを持つことです。当然、数値が男女何れかを識別するために、変数名「男」、「女」をデータとする必要があります。(なお、この形式のデータフォーマットは、前者を wide-format、男女別に人口を持つ後者を long-format と言うのだそうです。)
力技でこのような変換もできますが、簡単に行うのがreshape2::melttidyr::gatherです。
変換方法は次の通り。
(1) reshape2::melt

(2) tidyr::gather

この2つは、全く同じことを行っていますが、tidyrの方がスピードが速いのでお勧めだそうです。

Rで行と行の計算を行う

Rで異なる行同士の演算ってどうしたものやら、全く分からない。
と言うことで、SQLite3を使おうとしたもの。(前のブログ参照)
データは、SQLite3と同じ次のテーブルを使います。

このsaleの年度間の増減を計算したい場合、
つまり、次の様な表を作成するにはどうするか?

R の場合も、「LAG」がこの問題を解くキーワードでした。
mutate内で、lag()を使用します。

実行結果は次の通り。

通常の言語では、何のこともないこのような計算が、Rではある程度の予備知識がなければ途方に暮れてしまう程、面倒なものですね。

SQLite3 で行と行の計算を行う

SQLで異なる行同士の演算って意外に難しいものですね。
例えば、次の様なテーブル(Sales)があったとします。

このsaleの年度間の増減を計算したい場合、
つまり、次の様な表を作成するにはどうするか?

「LAG」がこの問題を解くキーワードらしいが、残念ながら SQLite3 は未サポートの模様。
解決策のヒントは、stack overflowのここにありました。
これに基づいて(真似て)作ったクエリは次の通り。

SQLite3 CSVのインポート

CSVのインポートにはSQLiteStudioを使用します。
使用する前に、あらかじめデータベースを作成しておいてください。
今回は、test.sqlite3 という名称でDBを作成したものとします。
(1) データベースの確認

(2) CSVのインポート

●テーブル名入力

●CSVやエンコードの指定

(3) 確認
●フィールドの確認

●データの確認

plyr と dplyr を比較してみる

準備

両方ともに、中々インターネットを探してみても情報が少ないので、あちらこちらか情報を掻き集めて比較してみようと思う。
データには、irisやflightsは馴染みがなく、かつデータ数が多過ぎて検証が難しいので、次のサンプルを使用します。

このデータは、気象庁のページからダウンロードしたものなので、自分の居住地のものが欲しい人は、こちらからダウンロードしてください。

データ入力

(1) plyr

① 各月ごとの最高気温の平均を計算

①-1 .()関数を使用する

.()を使用します。結果は、上と同じです。

② 最高気温の平均と標準偏差を計算

③ 列の追加

最高気温の平均を列に追加します。

(2) dplyr

① 各月ごとの最高気温の平均を計算

② 最高気温の平均と標準偏差を計算

②-1 最高気温の平均と標準偏差を計算

summarise_at を使った場合。結果は、上と同じです。

②-2 最高と最低気温の平均と標準偏差を計算

③ 列の追加

最高気温の平均を列に追加します。

これを年月でグループ化してみましょう。

おまけ

条件付きデータカウント

各月別に真夏日を数えてみよう。
知らないと、意外に面倒。データ数を数えるのでcountと思いきやエラー。sumを使うのが正解だそうです。

もののついでに棒グラフで表示してみる。


取り敢えずここまで。

WordPress-子テーマによるフォントの変更

Twenty Fifteen を例に、子テーマを使用してフォントをカスタマイズする。
1. 子テーマ用のフォルダ作成
/wp-content/themes に、子テーマ用のフォルダとして
twentyfifteen-child
を作成する。
2.style.css
上記のフォルダに、次の style.css を作成する。

コメントは、子テーマの情報として認識されので、各項目はサイトに合わせて書き換えること。特に必要なのは以下の2つ:

  • Theme Name … 子テーマの名前(例:Twenty Fifteen Child)
  • Template … 親テーマのフォルダ名(例:twentyfifteen)

スペルミスをするとうまく認識されないので、きちんと確認してください。
3. function.php
続いて子テーマフォルダ内に functions.php というPHPファイルを作成する。
functions.php のコードは以下の通り。

4. 子テーマを有効化
以上で子テーマが使えるようになったので、これを有効化する。
ダッシュボードから「外観→テーマ」と進んで、Twenty Fifiteen Child を有効化する。


参考URL:
子テーマを作ってWordPressの既存テーマをカスタマイズする方法

以上

Jupyter notebook を PDF 出力(windows編)

w32TeXをインストール済みではあったが

とすると、「ucs.sty」がないとのエラーが発生する。
調べてみると、その他にも utf8x.def, uni-global.def, ucsencs.def が必要とのことである。

入手方法は、各ソース名を検索キーに指定すると、ソースそのものの URL が見つかるので、表示されたテキストを秀丸等のテキストエディタに貼り付け、次のディレクトリに格納する。

ソース名 ディレクトリ名
1 ucs.sty C:\w32tex\share\texmf-dist\tex\latex\ucs
2 utf8x.def C:\w32tex\share\texmf-dist\tex\latex\base
3 uni-global.def
4 ucsencs.def

以上