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

以上

Jupyter notebook を PDF 出力(Ubuntu編)

Jupyter notebook で作成した ipynb ファイルは、様々な形式に変換できる。
サポートしている形式は以下の通り。

  1. HTML
  2. LaTeX
  3. PDF
  4. Reveal.js HTML slideshow
  5. Markdown
  6. reStructuredText
  7. executable script
  8. notebook

個人的には、HTMLとPDFだけで十分ではあるが・・・

例えば「test.ipynb」をHTMLに変換するには、コマンドラインから

とするとHTMLがtest.ipynbと同じディレクトリにtest.htmlが作成される。
css部分が巨大なので、1万ステップを超えるファイルになってしまうので、body部分のみを出力したい場合は、次のようにする。

PDF出力も、HTMLをPDFに変更した同じコマンドを使用する。

しかし、この形式に変換るにはLaTexを使用するので、先ずはLaTexのインストールが必要となる。
LaTexのインストール手順は以下の通り。

これでLaTexのインストールは完了していると思われるのだが、「xelatex」がPATHに登録されていないとのエラーが発生する。
致し方ないので、xelatexもインストールしてみる。
理由は分からないが、これで無事PDFが出力できるようになったが、イマイチ腑に落ちない。

Anaconda-Navigateから jupyter lab が使用できない

windows7にインストールした、Anaconda3のAnaconda-Navigateから
jupyterlabのlaunchボタンをクリックすると、一応デフォルトの
ブラウザが立ち上がり、jupyter notebook のアイコンが一時的に
表示されるのだが、直ぐにそれも消えて真っ白な画面に戻り、
何時まで経っても何の反応もない。

色々調べてみると、
GitHub
には、概略次のような記述がある。

「動作が確認されているのは次のもの。

  • 最新の Firefox
  • 最新の Chrome
  • 最新の Safari

古いバージョンでも動作するかもしれないが、何れも保証はない。

JupyterLab は、CSS 変数を使用しているので、それをサポートしていない IE 11+ や Edge 14 はサポート対象外。」

デフォルトのブラウザを換えたくないので、jupyter側のブラウザをChromeに変更する。
手順は、Qiitaを参考にした。

(1) /users/(あなたのユーザ名)/.jupyter/jupyter_application_config.py
が存在するかを確認。なければ、コマンドプロンプトより次のコマンドを実行する。

(2) jupyter_application_config.pyをテキストエディタで開き
c.NotebookApp.browser = ”を探す。
この下に次の行を追加し、保存する。

以上

phpAdminの設定

Apacheが突然動作しなくなった。
原因が全く掴めないので、xamppを再インストールすることに。

前回から約4年が経過し、随分内容に変化が見られるが
自分の環境で静かに動いてくれればよいので、MySQLに以前通りの
passwordを設定したのみ。

ところが、この所為でphpAdminが動作不能に。
前のバージョンでは、ログイン画面が出てパスワード聞いてきたのに
いきなり「パスワードが一致しない」と!
そりゃそうだわな、ログインもしてないし、パスワードも入力してないんだから。

ググって、いろいろ調べるも、どれもこれも古い情報ばかり。
検索条件を「一年以内」に絞って探し当てたのが
「AdminWeb」サイトの
「rootのパスワード設定後にphpMyAdminのログインに関する設定を行う」
と云う記事。

こんな風に変化しているとは驚きです。