GUI for read.table

【追記】そもそも起動しないバグを修正。ローカルで作ってた関数を移し忘れました…。

総制作時間6時間ぐらい?Gtk力の高まりを感じます。ぜんぜんテストしてないので、バグがあれば教えてください。バグというか、例外処理を入れてないのですぐエラー吐くと思いますが…それはご愛敬ということで。

f:id:phosphor_m:20130515010448p:plain

上がクラス定義、下が実行用スクリプト。必要パッケージはRGtk2のみ。そのうちRzにも取り込みます。

しかし命名規則がひどすぎて恥ずかしい…。

Rz開発状況(プロット機能書き直し,ケースの選択等)

ぼちぼち開発してます。

 

現実逃避したくなったときに一気にやる感じなのであまり効率が良くないのですが。

ggplot2 0.9.2に対応させようとしていたはずが,いつの間にかプロット周辺をほぼ完全に書き直していたり。

f:id:phosphor_m:20121010013604p:plain

プロット画面を切り離せるようになりました。インタラクティブにプロットを作り込む際に重宝します。UIもだいぶ整理しました。まだ汚いですが。

f:id:phosphor_m:20121010013829p:plain

さらに,待望のスクリプト出力機能。これで,ggplot2学習用としても使えるようになりました。このためにかなりプログラムを書き直したので,機能追加も容易になりました。初心者向けにわかりやすくしつつ,ggplot2の表現力を最大限引き出せるようにしたいですね。今後は,themeまわりを拡充しようかと思っています。

f:id:phosphor_m:20121010020025p:plain

あとは,ケースの選択機能をつけました。条件をsubsetに渡すだけなので,簡単にできました。このあたりのデータハンドリング機能は今後拡充予定です。まあ,気長に待ってください。

未実装な部分がちょこちょこあるので,CRANにはまだ上げられません。年内には,という感じです。

開発版は,githubおよびWindows用バイナリおよびソースを公開しているので,試してみてバグや要望を知らせていただけるととてもうれしいです。

Rzパッケージ0.4-0リリース

バージョンアップしました。かなり多くの機能を追加したので,足りていない,と思っていた機能が増えているかもしれません。中心的な追加機能を以下に紹介します。

  • プロットビューを大幅更新(実行・クリア・履歴ボタン,変数選択ドロップダウンボックス,ggplot2 0.9.0対応,その他多数)
  • テーマの添付(kde42-oxygen)
  • 変数ビューのレイアウトを変更
  • 尺度の表示および変更方法を変更
  • 変数の削除・複製機能

他にもたくさんありますが(特にプロットビュー周り),自分でもよくわからなくなってしまったので…。パッケージ添付のNEWSにもう少し詳しい更新情報があります。

プロットビューがどんな感じのものなのか,いまいち文章でうまく書けないので,動画を作りました。自分ではそこそこ高機能かつけっこう使いやすいと思っているのですが,いかがでしょうか?

インストール時の注意点として,ggplot2が0.9.0へのアップデートでR (≥ 2.14)を要求するようになりました。それにともない,Rzも ggplot2 (≥ 0.9)かつR (≥ 2.14)が必須となります。そのため,環境によっては,Rzインストールする前にRおよびggplot2のバージョンアップが必要な場合があります。

また,前バージョンから更新した場合には,今バージョンから同梱しているテーマは自動的には適用されません。設定から手動で変更してください。

さらに,更新とは直接関係はありませんがチュートリアルを移転しました。また,Gumroadでの寄付の受付を開始しました。 このパッケージがあなたの研究,仕事,趣味に役立ったのなら,それだけで十分うれしいのですが,寄付していただけるともっとうれしいです。 金額は自由に設定できます。 クレジットカードで簡単に寄付できます。 いただいた寄付は学費に充てさせていただきます。そういえば今月末に結婚式を挙げる予定なのですが,ご祝儀代わりに(ry

ぜひ感想をお聞かせください。

Rzパッケージ0.3-8リリース

Rzパッケージ更新しました。ラベル編集機能,キーボードショートカット,そしてクイックエディタが目玉です。

f:id:phosphor_m:20120207134539p:plain

f:id:phosphor_m:20120207135046p:plain

f:id:phosphor_m:20120207140814p:plain

クイックエディタは複数変数の定型加工やでかいデータを探索的に分析するときには非常に強力です。詳しくはチュートリアル( http://m884.hateblo.jp/entry/2012/02/03/081945 )で。

ちなみに,バージョンアップ頻度が高すぎる,とCRANのメンテナに怒られたので,しばらくバージョンアップはありませんw どっちにしろ,自分が欲しかった機能はほぼ実装できたので,一段落です。

Rzパッケージ最新版 on CRAN Now!

大幅更新を行ったRzパッケージの最新版(0.3-6)が,CRANで公開されました。今のところ,まだ統数研CRANミラー(tokyo)にしかミラーリングされていませんが,今日明日中には筑波と兵庫にも行き渡ると思います(注:0.3-3というのが筑波と兵庫にミラーリングされていますが,これはバグがあって動かないバージョンです)筑波と兵庫にも行き渡りました。

かなり気合いの入った更新でソースコード的にはあまり原型を留めていないので,どこが更新されたのか列挙するのは難しいのですが,チュートリアル(リンクがうまく貼れていません,チュートリアルは1つ前の記事です)を作成したのでこちらを見てもらえればだいたい機能は網羅しています。プロット周りはまだぜんぜん書けていませんが…。

一言(?)で言えばこんなこと↓ができるようになりました。

f:id:phosphor_m:20120203083440p:plain 

あと地味に大きいのが「data.setとして同期」という機能で,これによってコンソールとRzを自由に行き来できるようになりました。

Rzパッケージ・チュートリアル

移転しました。 http://m884.jp/Rz_Ja.html
* 更新履歴

Rzパッケージの更新履歴

  • 2012-02-06 0.3-8 クイックエディタビュー,値ラベル編集機能,キーボードショートカット追加
  • 2012-02-01 0.3-6 大幅更新
  • 2011-04-04 0.2-1 初版

なお,開発版を次のリンクで公開しています(Windows用バイナリソース)。CRANポリシーによりCRANへのアップロードは月に1回程度に制限されていますので,いち早く最新版を使いたい方はこちらをご利用ください(タイミングによってはCRANに上がっているものと同じバージョンかもしれません)。

このチュートリアルの更新履歴

  • 2012-02-07 0.3-8対応
  • 2012-02-02 0.3-6対応の初版

動作環境

主にWindowsとLinuxで動作確認をしています。Macは英語のみ,かつ公式GUI以外(ターミナル,ESS,RStudio)の環境で一応の動作確認ができています。公式GUIでは英数字であっても文字化けを起こします。その他の言語については確認できていませんが,少なくとも日本語は表示・入力ともにできません(おそらく中国語,朝鮮語も)。日本語のMacでも,Rを英語設定で立ち上げれば,公式GUI以外で使うことができます。ホームフォルダの.Renvironに LANGUAGE=En を書き足すと,Rを英語設定にすることができます。
また,バージョン2.12以降のRが必要です。バージョン2.12よりも古いRを使っている場合は,こちらから新しいバージョンをダウンロードしてインストールして下さい。

概要

GUIをRに

RzパッケージはSPSSと互換性を保ちつつそれを超えるようなデータ管理環境を目指して開発を行っています。
Rは非常に強力な統計解析環境ですが,グラフィカルユーザーインターフェースGUI)に関してはいまのところ貧弱と言わざるをえません。GUIなど必要ない,慣れればスクリプトを書いた方が早い,という意見も多く,確かに多くの場面ではそれは真実なのですが,一方でGUIが優位性を持つ場面もやはり存在します。
Rzの主機能であるデータ管理も,そのうちの1つです。例えば社会調査データの場合,1つのデータセットが数十から数百を超える変数を持ちます。このぐらいの数の変数をコンソールで管理するのは,大変な煩わしさが伴います。全ての変数名を正確に覚えきるのは現実的ではありません。また,これだけ変数があると,ある変数がどのような変数だったか確かめるだけでも大変な労力です。短い変数名(あるいは”Q1”のような形式的な変数名)では内容が分かりませんし,かといって長い変数名をつけると分析の際に不便です。結局,対処としては変数情報を一覧できる他のソフト(ExcelやSPSS)をRと並行して立ち上げる,というような方法になってしまいます。
このような煩わしさを解消することが,Rzの開発目的の1つです。

memiscパッケージを取り込んだRzのデータ管理機能

Rzは,しかし,単なる変数閲覧パッケージではありません。Rzの本質は,memiscパッケージの機能の組み込みにあります。memiscパッケージは,変数ラベル,値ラベル,尺度の管理,ユーザー欠損値といった,SPSS等の持つデータ管理機能をRでも使えるようにする強力なパッケージです。つまり,memicのフロントエンドとしてのGUIを構築することで,SPSS等のグラフィカルな統計解析パッケージと同等以上の機能をRにもたらすのが,Rzパッケージです*1SPSSはよくRと比較され,どちらがより優れているのか様々な意見が交わされていますが,もしSPSSのバックエンドが完全にRになったとしたら,それはすばらしいソフトだと思いませんか?

初心者向け?

Rzはこのような成り立ちのソフトであるため,GUIを提供するといっても,必ずしもRの初心者向けとして作られたわけではありません。例えば,SPSS等のような統計解析のインターフェースはありません。統計解析は,スクリプトを書いてコンソールベースで行った方が効率的だと考えるからです。つまり,コンソールが優位な場面ではコンソールを,GUIが優位な場面ではGUIを使う,というのがRzの設計思想です。
とはいえ,例えばSPSS等から乗り換える際に,Rzを使えばmemiscのSPSS互換機能によって多くの障害が取り除かれるのは確かですし,それも開発目的の1つではあります。しかし,それにとどまらず,むしろ中級者以上のRユーザーのデータ分析の効率を高めることが,Rzの主たる開発目的です。
このような目的であることから,Rzはクリックしていくだけでなんでもできるわけではなく,利用者はRの基本的な使い方を学んでおく必要があります。そしてその次のステップとしてmemiscパッケージの使い方を学ぶことで,柔軟かつ効率的にデータを管理し,分析により多くの力を注ぐことができるようになるでしょう。
memiscパッケージの使い方については,ビネットや,私が過去に作った資料(PDF)があります。また,Rパッケージガイドブックにより詳しい解説を書いています。

プロット機能

さらにRzは,実用的なプロット機能を搭載しています。Rでグラフを作成するとき,作りたいグラフは完璧に頭の中にあるのに,それがうまく作れずに頭を悩ませた経験はありませんか? Rのプロット機能は多彩で強力ですが,そのぶん複雑で,作成するグラフごとに異なる様々なオプションを把握するのは楽ではありません。
Rzはggplot2をバックエンドに使い,美しいグラフを簡単な操作で作成することを可能にしています。

インストール

Rzパッケージと,依存パッケージをインストールします。

install.packages("Rz")

依存パッケージとしてRGtk2パッケージがインストールされます。RGtk2パッケージは,別途GTK+をダウンロードする必要があります。以降,GTK+のダウンロード手順を説明します。
まず,RGtk2パッケージを読み込むと,以下のようなエラーが出ます。

> library(RGtk2)
Error in inDL(x, as.logical(local), as.logical(now), ...) : 
   共有ライブラリ 'C:/home/masahiro/R_library/RGtk2/libs/i386/RGtk2.dll' を読み込めません: 
  LoadLibrary failure:  指定されたモジュールが見つかりません。

さらに,ダイアログでGTK+のインストールを促されます。そのままOKを押し,GTK+をダウンロードして下さい。

f:id:phosphor_m:20120125194240p:plain

ダウンロードが始まります。

 URL 'http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.22/gtk+-bundle_2.22.1-20101227_win32.zip' を試しています 
Content type 'application/zip' length 24516284 bytes (23.4 Mb)
 開かれた URL 
downloaded 23.4 Mb

f:id:phosphor_m:20120125194639p:plain

ダウンロードが終了すると,以下のようなメッセージが出ますので,Rを再起動して下さい。

Learn more about GTK+ at http://www.gtk.org
If the package still does not load, please ensure that GTK+ is installed and that it is on your PATH environment variable
IN ANY CASE, RESTART R BEFORE TRYING TO LOAD THE PACKAGE AGAIN
 警告メッセージ: 
Failed to load RGtk2 dynamic library, attempting to install it. 

再起動後,以下のスクリプトを実行し,何もないウィンドウが出れば,インストールは完了です。

library(RGtk2)
gtkWindowNew()

f:id:phosphor_m:20120125195037p:plain

起動

インストール後,起動は以下のようにするだけです。

library(Rz)
Rz()

または,メニューバーからも起動できます。

f:id:phosphor_m:20120125195143p:plain

起動すると,以下のようなウィンドウが立ち上がります。
f:id:phosphor_m:20120202144543p:plain

データの読み込み

作業環境からのデータの読み込み

「大局的環境からインポート」では,すでに作業環境にあるデータをRzに読み込むことができます。読み込めるデータは,data.frameかdata.setです。
試しに,irisを読み込んでみて下さい。まず,次のスクリプトを実行すると,組み込みデータのirisが大局的環境にロードされます。

data(iris)

メニューバーのファイルかツールバーの「大局的環境からインポート」を選び,ドロップダウンメニューからirisを選択してください。
f:id:phosphor_m:20120202144556p:plain

f:id:phosphor_m:20120202144607p:plain

コンソールで以下のスクリプトを実行すると,dataset1という名前の,irisと全く同じ中身のdata.frameができていることが分かります。これはRzに読み込んだirisが,dataset1という名前で大局的環境に出力されたものです。Rz上でのデータの変更は即座に大局的環境に反映されるので,Rz上でデータ管理を行い,出力されたデータを分析に用いる,というのがRzの基本的な使い方です。

> ls()
[1] "dataset1" "iris"    
> summary(dataset1)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width          Species  
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   setosa    :50  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   versicolor:50  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300   virginica :50  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199                  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500
> all.equal(iris, dataset1)
[1] TRUE

ファイルからのデータの読み込み

メニューバーのファイルかツールバーの「開く」を選ぶと,ファイルからデータを読み込むことができます。

f:id:phosphor_m:20120202144707p:plain


現在の対応形式は,独自形式のRz Dataファイル(*.rzd),SPSSシステムファイル(*.sav),SPSSポータブルファイル(*.por),Stataファイル(*.dta)コンマ区切りテキスト(*.csv),タブ区切りテキストです。

f:id:phosphor_m:20120202144718p:plain

ファイルの文字コードがRの文字コードと異なる場合は,エンコーディングからファイルの文字コードを選択して下さい。
コンマ区切りテキスト,タブ区切りテキストを読み込むときは,ヘッダの有無(一行目が変数名かどうか),欠損値(NA)に割り当てている文字を設定して下さい。

f:id:phosphor_m:20120202144733p:plain

大きなデータは読み込みに時間がかかります。また,文字コードを変換する場合は読み込みに数分かかる場合があります。

f:id:phosphor_m:20120202144754p:plain

データの管理

Rzのデータ管理の基本

読み込んだデータは,ツールバーの下のドロップダウンリストで切り替えることができます。リスト内の左側がデータセット名,右側が読み込んだファイルの名前です。

f:id:phosphor_m:20120202144805p:plain

Rzは大局的環境とは別の場所(パッケージの環境)で独自にデータを管理していることに注意して下さい。Rzの管理しているデータは,データセット名を変数名として,常に大局的環境と同期されますが,同期は基本的に一方向です。つまり,Rz上でのデータの編集は大局的環境に反映されますが,大局的環境でのデータの編集はRz上に反映されません。

大局的環境からリロード

大局的環境で加えた編集をRz上に反映させたい場合,2つの方法があります。1つめは,「大局的環境からリロード」を使う方法です。この機能は単純ですが,非常に強力です。非定型のデータ整形ならばRzで行い,定型のデータ整形ならばスクリプトによって一気に行ってからRzにリロードすることで,GUIとコンソールを効率的に使い分け,生産性を上げることができます。このようなGUIとコンソールの連携が,Rzの大きな特長の1つです。

f:id:phosphor_m:20120202144823p:plain

この機能を使うためには,「memiscパッケージのdata.setとして同期」を有効にしておく必要があります。無効の場合,同期はdata.frameで行われます。data.frameは変数ラベルやユーザー欠損値などの情報を持たないため,Rz上のデータに反映させるとそれらの情報が欠落してしまいます。そのため,データを編集する際には,この設定を有効にしておくことを推奨します。
一方で,data.setは場合によっては分析に用いるのに適しません。data.setは透過的にdata.frameと同じように扱えるようになっていますが,やや処理が遅く,また関数によっては用いることができない場合があります。そのため,分析の際にはこの設定を無効にすることを推奨します。

f:id:phosphor_m:20120202144838p:plain

2つめは,「大局的環境からインポート」を使って別データとして読み込む方法です。こちらはdata.setでもdata.frameでも読み込むことができますが,上記と同様の理由で,data.setから読み込むことを推奨します。

その他のデータ管理機能

元のデータセットに戻す

「元のデータセットに戻す」を使うと,データを読み込み時の状態に復元することができます。

現在のデータセット名を変更

「現在のデータセット名を変更」を使うと,表示されているデータセットのデータセット名を変更することができます。

f:id:phosphor_m:20120202144919p:plain

現在のデータセットを取り除く

「現在のデータセットを取り除く」を使うと,表示されているデータセットを取り除くことができます。

データの操作

変数が並んでいるシートを,変数ビューと呼びます。変数ビューの列は,左から順に,インデックス,変数名,変数ラベル,尺度,値ラベル,ユーザー欠損値です。
変数名は,data.frameの変数名と同じもので,変数にアクセスする際に使います。変数ラベルには,変数のより詳しい説明を記入することができます。
尺度は,nominal,ordinal,interval,ratioから選ぶことができます。分析に用いる際には,nominalはfactor,ordinalはorderd,intervalとratioはnumericに変換されます。
値ラベルは,変数の値にラベルをつけるものです。Rではfactorをカテゴリ変数,numericを量的変数として用いますが,factorにインデックスとして数値を割り当てたり,numericにラベルをつけたりすることはできません。Rzでは,SPSSやStataのようなラベル管理を可能にしています。
ユーザー欠損値は,変数の値を,情報を失わずに欠損値に指定する機能です。Rは通常いったんNAを割り当ててしまうと,元の値を復元することはできません。Rzでは,ユーザー欠損値の機能によって,値を柔軟に欠損値にしたり戻したりすることができます。

データの編集 New!

値ラベル以外は,行を一度選択してから,次に各セルをクリックすると編集できます。尺度は,行を選択後,尺度のセルをクリックし続けると,ドロップダウンリストが現われ,尺度を選択できます。連打するとフリーズするので気をつけて下さい。値ラベルを変更する場合は,変数を右クリックし,値ラベルの変更画面から変更してください。「+」の行に値とラベルを入力することで新しい値ラベルを追加することができ,「-」のセルをダブルクリックすることで値ラベルの削除ができます。

f:id:phosphor_m:20120207134539p:plain

ユーザー欠損値の設定

ユーザー欠損値は,値指定と範囲指定の2種類の方法で設定することができます。
値指定は,ユーザー欠損値に指定したい数値をコンマで区切って入力します。

1, 2, 3, 4, 5

このように指定すれば,1と2と3と4と5がユーザー欠損値に指定されます。また,以下のように指定することもできます。

1:5

これは,1つめの指定方法と同じ結果になります。基本的に,c関数に渡したときに数値ベクトルが返り値となる記述であれば,入力することができます。よって,以下のように交ぜて入力することも可能です。

1:5, 9, 10, 12:15

範囲指定は,以下のように記述します。

range=c(5, 10)

この場合,5以上10以下の値がユーザー欠損値となります。値指定とちがい,6.4や9.8などの小数を含む,範囲内の全ての実数が欠損値となります。
Infを指定することで,無限大の範囲を設定することもできます。

range=c(5, Inf)
range=c(-Inf, 3)

範囲指定は,1つの変数につき1つの範囲しか設定することができません。また,値指定と混在させることはできません。

リコード

変数の行で右クリックしてリコードを選択すると,リコードのダイアログが表示されます。

f:id:phosphor_m:20120202144950p:plain

一番上がその変数に存在している値です。その下の左側が変数の値とラベルの対応関係です。ラベルは存在していない値にも付けることができ,反対に値は存在するがラベルはついていない場合があるので,この欄で確認して下さい。
ラベルの欄の右側は,一番上がいまリコードしている変数の名前,その下がリコード結果を保存する変数の名前です。リコード先にリコード元と同じ名前,またはデータセット中に存在する変数名を入力すると,上書きされます。データセット中に存在しない変数名を入力すると,新変数としてデータセットの最後尾に付け加えられます。その下が,変数に設定する変数ラベルです。
その下の「テンプレートの生成」ボタンを押すと,リコードのテンプレートが生成されます。このまま実行すると,全く同じ変数が生成されます。これを書き換えてリコードすることで,素早いリコードが可能です。下の画像が実例です。

f:id:phosphor_m:20120202145009p:plain

この例では,1は1のまま,2と3を2に統合して「中」というラベルを付ける,4と5を3に統合して「下」というラベルを付ける,その他の値はそのまま,となっています。
otherwiseはこの例では意味がありませんが,リコードを指定していない「その他の値」についての処理を記述します。例えば一行目の1の値については,otherwise="copy"を指定しているので,今回の場合消してしまっても同じ結果になります。otherwise=NAにすれば「その他の値」は欠損値になりますし,otherwise=3とすれば「その他の値」はすべて3になります。
量的変数をカテゴリ変数にリコードしたい場合,range記法が便利です。

"低"=1 <- range(min , 40),
"中"=2 <- range(40.01, 60),
"高"=3 <- range(60.01, max)

このように書くと,最小値から40までが1でラベル「低」,40.01から60までが2でラベル「中」,60.01から最大値までが3でラベル「高」というふうにリコードされます。値を重複させるとエラーになるので気をつけてください。
基本的な書き方はmemiscパッケージのrecode関数と同じです。詳細はhelp(recode)を参照してください。

クイックエディタビュー(クイックエディタ) New!

クイックエディタビューを開くと,以下の画像のような画面が現れます。

f:id:phosphor_m:20120207134839p:plain

上半分には変数ビューでチェックされた変数が一覧されており,下半分が簡易エディタになっています。試しに,irisデータのSepal.Length〜Petal.Widthの4変数にチェックを入れ,エディタに,

print(summary(df.orig))
cor(df)

と入力して「実行」ボタンを押すかキーボードでControl+Rを押してみてください。

f:id:phosphor_m:20120207135046p:plain

コンソールに,下の画像のような出力がされます。

f:id:phosphor_m:20120207135549p:plain

クイックエディタでは,もとのデータにdf.origという名前で,選択した変数のみに変数をしぼったデータ(今回でいえばiris[1:4]というデータ)にdfという名前でアクセスすることができます。クイックエディタを使えば,定型の出力を変数を入れ替えながら探索的に見る,というような作業の効率が大幅にアップします。
注意点として,クイックエディタで得られる出力は基本的に最後の関数の出力のみです。それ以外の出力を得たい場合は,能動的にprint関数などを使う必要があります。また,関数の戻り値を保存したい場合は,「<-」の代わりに「<<-」という代入記号を使えば,大局的環境に戻り値を保存することができます。

クイックエディタビュー(クイック変数エディタ) New!

クイックエディタビューのもう1つの機能,クイック変数エディタでは,チェックした変数に定型の加工を施し,データに反映させることができます。
変数の加工について,いくつかのテンプレートも用意してあります。まずは,クイックエディタのときと同じように4変数にチェックを入れ,テンプレートから「尺度を変更する」を選んでみてください。エディタに,

measurement(var) <- "ratio"

と入力されます。「実行」ボタンを押すかキーボードでControl+Rを押してみてください。

f:id:phosphor_m:20120207140804p:plain

変数ビューを見ると,チェックを入れた4変数の尺度が「ratio」に変わっているはずです。
クイック変数エディタの仕組みは単純で,チェックされた変数は順番にvarという変数に代入され,処理を加えられたのちに元の変数に上書きされる,というものです。この処理にはmemiscパッケージのforeachという関数を使っています。
クイック変数エディタの注意点として,memiscの関数を使わない処理では多くの場合,変数ラベル・値ラベル・ユーザー欠損値などの情報が欠落してしまいます。やや面倒ですが,例えば下の画像のように処理を加える前にいったん変数ラベルなどを変数に保存しておくことで,欠落を防ぐことができます。

f:id:phosphor_m:20120207140814p:plain

データの閲覧

行にカーソルを合わせると,変数のsummaryがポップアップします。行をダブルクリックすると,より詳しい要約がコンソールに表示されます。これはmemiscパッケージのcodebookという関数を使っています。

f:id:phosphor_m:20120202145044p:plain

ポップアップは設定で無効にすることもできます。

データビュー

データビューを選択すると,生データを見ることができます。今のところ,見ることしかできません。

f:id:phosphor_m:20120202161721p:plain

データの検索

ツールバーの下,データセット選択のドロップダウンリストの右にはサーチボックスがあります。ここに入力した内容は即座に変数名・変数ラベルから検索され,ヒットした変数の行が選択されます。次を検索する場合は下矢印キー,前を検索する場合は上矢印キーを押してください。
なぜかSPSS等には検索機能が存在しないのですが,大規模なデータを管理する際には必須の機能といってよいでしょう。

f:id:phosphor_m:20120202145131p:plain

データの保存

「別名で保存」を選択すると,データを保存することができます。

f:id:phosphor_m:20120202145154p:plain

独自形式の「Rz Dataファイル」で保存すると,全ての情報を保ったまま保存し,再度読み込むことができます。「SPSSシンタックスとCSV」で保存すると,CSVと,CSVを読み込むためのSPSSシンタックスが出力されます。「Stata DoファイルとCSV」で保存すると,CSVと,CSVを読み込むためのDoファイルが出力されます。「Stataファイル」で保存すると,Stataのdta形式のファイルで保存されます。コンマ区切りテキスト,タブ区切りテキストで保存すると,それぞれコンマ区切り,タブ区切りのCSVで保存されます。ファイルを開くときと同様,ヘッダの有無(一行目が変数名かどうか),欠損値(NA)に割り当てる文字を設定して下さい。

プロットビュー

プロットビューでは,ggplot2パッケージを用いた柔軟で美麗なグラフを出力することができます。
プロットビューを有効にすると,ggplot2の様々なオプションを設定する領域が現れます。ggplot2の多くの機能の中から,主要なものを使いやすくまとめてあります。軸や凡例のラベルには,データセット内の変数の変数名や変数ラベルを簡単に設定することができます。変数名を入力する際には,オートコンプリ−ションが働き,入力ミスを防ぎつつ素早く変数名を入力することができます。

f:id:phosphor_m:20120202145212p:plain

まずは,なにもオプションを設定せずに,変数のインデックスをダブルクリックしてみてください。カテゴリ変数であれば棒グラフ,量的変数であればヒストグラムが出力されます。プロットビューでは,変数のインデックスをダブルクリックすることでプロットを出力します。これは変数の詳しい要約をコンソールに出力するときと同じ操作です。
もし,プロットビューを開いているときには要約を出力してほしくないのであれば,設定を変えることができます。

f:id:phosphor_m:20120202145246p:plain

プロットビューの使い方

プロットビューの機能のほとんどはggplot2に基づいていますが,ggplot2はとても高機能なパッケージであるため,その解説は Rzパッケージのチュートリアルの範囲を超えます。とはいえ,ggplot2の基本的な使い方さえ覚えれば,プロットビューを使うのはとても簡単です。逆に,とりあえずプロットビューをいじって感じをつかんでから,本格的にggplot2を勉強する,というのも有効だと思います。
ggplot2は,公式サイトが非常に充実しています。また,作者による書籍およびその訳書も販売されています(ただし,シュプリンガー・ジャパンの撤退にともない,訳書は現在品薄になっています。そのうち事業譲渡先の丸善から発売されると思いますが,いつになるか分からないので,書店で発見したときは迷わず買いましょう)。また,ウェブページ,ブログ記事,勉強会の資料などもとてもたくさんあるので,検索してみてください。


例えば下の画像のような美しいグラフを,変数の指定とマウスクリックだけで出力することができます。

f:id:phosphor_m:20120202145341p:plain

プロットビューでは,出力した画像を簡単に保存することができます。また,保存のフォーマットも豊富です。

f:id:phosphor_m:20120202145714p:plain

その他の設定

テーマセレクタ

好みのテーマをダウンロードし,適用することができます。まず,テーマを入れるフォルダを好きなところに作り,設定画面でテーマフォルダを設定して下さい。次に,Gtk+2テーマをダウンロードしてきます。テーマはGNOME-LOOK.ORGからダウンロードできます。Gtk+3テーマとして配布されているものの中にも,Gtk+2テーマを含んでいるものがあります。ダウンロードしたテーマを,以下のような階層になるように,テーマフォルダに格納します。

"テーマフォルダ/テーマ名のフォルダ/gtk-2.0/gtkrc"

再び設定画面を開くと,テーマを選択できるようになっています。テーマの変更は,R本体を再起動するまで適用されません。

注意点として,pixmap以外のテーマエンジンを使っているテーマは,ほとんどが正しく表示されません。問題なく表示されるテーマをいくつかピックアップしたので,参考にして下さい。

f:id:phosphor_m:20120202151017p:image:w200
Aero-clone
f:id:phosphor_m:20120202151018p:image:w200
Azel
f:id:phosphor_m:20120202151019p:image:w200
Candido
f:id:phosphor_m:20120202151021p:image:w200
Detour E17-GTK2
f:id:phosphor_m:20120202151022p:image:w200
ElegantBrit gtk3
f:id:phosphor_m:20120202151024p:image:w200
kde4.2-oxygen (modified)
f:id:phosphor_m:20120202151025p:image:w200
Mac4Lin
f:id:phosphor_m:20120202151027p:image:w200
MacOS-X Aqua Theme
f:id:phosphor_m:20120202151028p:image:w200
Orta
f:id:phosphor_m:20120202151030p:image:w200
SlicknesS

埋め込みグラフィックスデバイス

埋め込みグラフィックスデバイスを使うと,ウィンドウ内部にプロットを埋め込むことができます。ただし,Windowsでは一部プロットが正常に表示されません(facetが正しく描画されないことを確認しています)。おそらく埋め込みに使用しているcairoDeviceパッケージのバグだと思われます。
この設定の変更は,Rzをいったん閉じ,再度Rz()を実行するまで反映されません。

f:id:phosphor_m:20120202145745p:plain

フォントの設定

Rzでは画面表示やプロットに用いるフォントを指定することができます。特にプロットのフォント指定は通常は煩雑な手続きが必要ですので,利便性を大きく高める機能の1つだといえるでしょう。PDFのフォントとPostScriptのフォントについては,プロットをそれぞれの形式で保存するときにのみ用いられます。

f:id:phosphor_m:20120202145821p:plain

今後の予定

順不同です。優先順位が高くないものも含まれています。要望をいただければ優先順位を上げます。

  • ログ機能
  • スクリプトでRzを操作できるようにする
  • ラベル等をファイルから読み込み
  • 簡易レポート作成機能
  • plot履歴
  • エラーバーなどの実装
  • 変数の計算
  • ポップアップ改善
  • 変数にタグ
  • クロス集計表
  • ワーディング管理
  • ケースの選択
  • 最近使ったファイル

情報求む!

RGtk2 on Mac

MacのRGtk2でどうやっても日本語を表示できません。Gtk+2かRGtk2の内部的な問題の可能性も高いのですが,設定でなんとかできるならそうしたいところです。今のところ,コンソール等からなら英数字は表示できるが日本語は全く表示されず,R GUIからなら英数字すら化けるが化けた結果として日本語が表示される,ということがわかっています。pangoまわりが怪しい気がするのですが,それ以上はわかりませんでした…。詳しい方,何かわかることがあれば是非教えてください。

バグ報告・要望・質問・感想・批判等

全て大歓迎です。機能追加の要望があれば,内容によりますが可能なかぎり優先的に実装します。
twitter(@phosphor_m)かメール(rinm884@gmail.com)かコメントでよろしくお願いします。

*1:実際,Rzパッケージの開発初期はmemiscGUIという名前でした。

memiscGUIパッケージあらためRzパッケージをCRANに登録しました



これは古い情報です。最新の情報はこちらになります(2012/02/03)









長らく更新が止まっていたmemiscGUIパッケージですが,Rzパッケージと名前を変え,CRANに登録しました。パッケージの目的や使い方には大きな変化は無いですが,更新点は多数あります。

f:id:phosphor_m:20110405182642p:image

  • R5リファレンスクラスで全面的に書き直しました。
  • データセットとデータフレームのリンクが不要に。大局的環境のデータフレームとシームレスに同期。
  • 一度読み込んだデータセットはキャッシュしておくことで,データセットの切替を高速化(ほぼ待ち時間なし)。
  • 独自形式データ(*.rzd)の保存・読み込み機能(実態は独自クラスオブジェクトをsave()で保存しているだけ)。
  • 変数名,変数ラベルの検索機能を実装。
  • リコード時に変数ラベルの付与が可能に。
  • その他,たくさんのバグフィックス

自分でいうのもなんですが,memiscGUIと比べると,格段に使いやすくなり,実用的になっていると思います。

インストール

Rのバージョンは2.12以上に上げる必要があります。バージョンが古い場合はCRANミラーからダウンロードしてインストールしてください。

次に,メニューバーからRzパッケージをインストールするか,install.packages("Rz")を実行してください(現時点ではまだtsukubaミラーには同期されていないので,hyogoミラーからインストールしてください)。他の依存するパッケージがインストールされていない場合は,同時にインストールされます。

これまでにRGtk2パッケージをインストールしていない場合

Rzパッケージが依存しているRGtk2パッケージを使うためには,R外部のソフトウェアとしてGtk+2 Runtimeをインストールする必要があります。Runtimeをインストールしていない場合は,まずlibrary(RGtk2)を実行してください。エラーが出ますが,そのあとにRuntimeをインストールするかどうかを尋ねるダイアログが表示されるので,インストールを選ぶと自動的にダウンロードされ,インストールのプロセスが始まります。特に設定を変えずにそのままインストールすれば大丈夫です。Runtimeのインストール後,Rを再起動し,library(RGtk2)を実行してエラーが出なければ完了です。まだエラーが出る場合は,パソコンを再起動してみてください。

すでにRGtk2パッケージをインストールしている場合

RGtk2のバージョンは2.20以上が必要です。RGtk2パッケージのアップデートはメニューバーからパッケージの更新を実行するか,update.packages()を実行してください。

また,Windowsでは,RGtk2パッケージのアップデートにともない,Gtk2 Runtimeも新しくインストールする必要があります。古いRGtk2が対応していたRuntimeは更新が止まってしまったため,コントロールパネルから必ずアンインストールしてください。アンインストール後,上記の手順で新しいRuntimeをインストールしてください。

起動

library(Rz)で読み込み,Rz()を実行するだけです。Windowsの場合は,メニューバーからも起動できます。詳しい使い方はそのうちマニュアルを書こうと思います。

名前の由来

名前については…特に意味はありません。Rの文字で始めたかったというのと,CRANを調べたところ,2文字目がzのパッケージがひとつも無かったので。