概要
データフレームを効率よく処理するときの定番といえばーー?
せーの!
>『『`{dplyr}`!!!』』
正解!素晴らしい!10ポインツ!
ですが欠損値を埋めたり、一行だけ消したり・・・といった風に、何らかしらの理由でデータの中身を直接修正したいときもありますよね。
データを画一的に処理するときは{dplyr}
は大変重宝しますが、個々のデータ修正自体には少々使いづらいです。
そこでRStudio上でのデータ編集に役立つ、あまり認知されていないものの超絶使いやすい{editData}
というRStudio用の拡張機能(アドイン)を紹介します。
導入
CRAN版と開発版の2つがあります。お好きなほうをどうぞ。
個人的には開発版がおすすめです。
この記事では開発版を使っています。CRAN版と若干仕様が違うので注意してください。
# CRAN版
install.packages("editData")
# 開発版
# {devtools}パッケージが必要です。
devtools::install_github("cardiomoon/editData")
導入完了後に、一旦RStudioを再起動してください。
操作
予め編集したいデータセットを用意しておいてください。
df1 <- iris
1. エディタの起動
関数で呼び出す方法と、アドインから開く方法があります。
どちらでもOKです。
関数による呼び出し
df2 <- editData::editData(df1)
追記:プラグインの不具合なのか、コールバックが上手くいかないようなので、編集したデータフレームを代入する形で呼び出してください。同じデータフレームに代入するようにすると上書きになります。
df1 <- editData::editData(df1)
アドインからの起動
ここです。
エディタが起動したらOr Enter data name
欄に編集したいデータフレーム名を入力しましょう。
追記:コールバックエラーが発生しているので、先に紹介した方法(関数で起動)でないと変更が反映されないようです。そのため、CSV出力を想定している時以外はこの方法は使えないと思われます。
3. データの検索 (AND検索)
編集したいデータを探すためには、Search
欄を使った検索が便利です。
例えば、以下のような条件のデータを探しているとします。
- Sepal.Width = 3.2、
- Petal.Length = 1.4
- Species = setosa
その場合は、こんな感じで入力すれば絞り込めます。列名と紐づけたような検索やOR検索は恐らくできないですが、欲しいデータの中身が幾つか分かっていれば十分だと思います。
4. データの中身を編集
先ほど絞り込んだデータを編集しましょう。
今回は、Sepal.Lengthを『4.6 ⇒ 5.0』に変更してみましょう。
編集したい数値をダブルクリックして書き換えるだけです。
再び同じ条件で検索して、データが変更されていることを確認しましょう。
3. データの追加
Add New
をクリックして、適当にデータを入力してみましょう。
Update⇒Closeでウィンドウを閉じると変更が適用されます。
データが最後尾に追加されたのが確認できます。
なお任意の場所にデータを追加したい場合、追加したい場所の下の行を選択してInsert Row
をクリックします。
5. 行の削除
要らない行を選択してDelete Row
を押せば消えます。
6. 変更の適用
必要な編集が完了したらDone
を押します。これでR上に変更が反映されます。
7. データの全削除
Reset
を押すことでデータの中身をすべて削除できます。
列名は生き残っているので、一旦更地にしてからデータを手動で追加していく場合に使用できます。
普通はあまり使わないと思います。
8. データの復旧
Restore
Restore
を押すことで、直前の操作(追加・削除)に限り、戻すことができます。
2回以上前の操作は戻せないほか、行の増減を伴わない作業(データ自体の編集)も、この方法では戻せないようです。
これらの操作を戻したい場合は、次項の初期化で行うことができます。
Cancel(初期化)
追加・削除・編集したデータを編集前に戻すには、左上のCancel
を押します。
Rにエディタ上の変更が反映されないので、Restore
で戻せないものも初期化することで復旧可能です。
FAQ
Q. Addin欄にeditDataが表示されない
A. RStudioを再起動すれば多分でてきます。
Q. エディタは起動するけどデータが正常に表示されない
A. オブジェクト名(データフレーム名)が3文字以上でないとダメなようです。名前を変えてみてください。
# この場合はダメ
df <- iris
editData::editData(df)
# この場合はOK
df1 <- iris
editData::editData(df1)
Q. 何ができないか?
A. 例えば、以下のことができないと思います。必要であればR上で個別に操作してください。
- 列の追加
- 列名の編集
- 行・列の並び替え
- 縦持ち・横持ちの置換
Q. 日本語に対応しているか?
A. 対応しています。標準のedit()
では日本語が文字化けすることがありますが、editData
では問題なく扱えます。
Q. N/Aを検索したい
A. 検索欄ではN/Aを直接検索することはできなそうですが、カラムをクリックして昇順・降順いずれかでソートすると最後尾にN/Aのデータが集まりますので、このソート機能を活用するとよいでしょう。
おわりに
多少使い勝手の悪い部分もありますが、データをRStudio上で直接編集できるのは超ありがたいです。
皆様のデータ分析に役立ちますように。
Enjoy!
おしまい。
参考文献
package editData : An RStudio Addin for Editing A ‘data.frame’