Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mコマンド入門

4,424 views

Published on

TokyoR 44回のLT資料の修正版です。

Published in: Data & Analytics

Mコマンド入門

  1. 1. RユーザのためのMコマンド 1 TokyoR #44 LT @weda_654
  2. 2. 自己紹介 ✓ TwitterID : weda_654 ✓ 所属 : GoogleMapとAWSとデータ分析の会社 ✓ 職 : 前処理蓄(略してショチク) ✓ 使用言語 : R(メイン), Python(たまに) ✓UNIXによる前処理の修行中ですこんなアイコン 2
  3. 3. 注意事項 本資料は個人の意見・認識によるものです 所属する組織の意見・認識とは無関係です ご了承おねがいいたします
  4. 4. 4 目次 ✓ はじめに ✓ 要約Mコマンド ✓ Mコマンド2.0 ✓ よく使うコマンド紹介 ✓ さいごに
  5. 5. はじめに 5
  6. 6. 再利用できないコード…                                ____             /      \           / ─    ─  \          /   (○)  (○)  \           |      (__人__)     |          \     `⌒́     ,/          /     ー-     \ 6 32bitOS… メモリは4GB… 蓄積されないノウハウ… 進捗ありません… ショチク ショチクこと私の辛み はじめに
  7. 7. 7 はじめに そんなあなたに Mコマンド
  8. 8. 8 Mコマンドとは はじめに ✓ NYSOLプロジェクトの一つ ✓ UNIX(Mac・Linux)環境で動作する大規模なcsvデータを 効率よく処理するためのコマンド群 ✓ オープンソースであるため無料で扱える
  9. 9. はやい やすい うまい 処理速度が 学習コストが シェルスクリプトとの連携が 三拍子が揃ったツール
  10. 10. 本資料の趣旨 ✓ 大きなデータが苦手なRにかわる前処理の手段を紹介 ✓ Mコマンドの戸口を広げたい ✓ RとMコマンドの合わせ技について 10 はじめに
  11. 11. 11 導入(1) はじめに ✓ http://www.nysol.jp/にアクセス ✓ Downloadをクリックし説明に従っていけばOK
  12. 12. ✓ 現在Mコマンドには,バージョン1.2とバージョン2.0があります 12 導入(2) はじめに これからMコマンドを始める方は2.0がオススメです ✓ Mコマンドのインストールが完了したならば… ターミナル上にてmcut ̶helpと入力 mcutコマンドの説明が 表記されていればOK
  13. 13. 13 導入(3) はじめに ✓ 扱い方は公式マニュアルで全て網羅できる 困ったことがあればマニュアルを まず確認すること
  14. 14. 要約Mコマンド 14
  15. 15. 15 利点 要約Mコマンド ✓ 公式マニュアル一つで必要な知識は網羅できる ✓ パイプでコマンド同士をつなげて処理ができる ✓ 処理が早い* 過去のTokyoRで速度比較のスライドがあります
  16. 16. 16 欠点 要約Mコマンド ✓ Windowsでは使用できない * cygwinでは使用不可,使うのであればVMWare&Linux環境が必要 ✓ 中間生成物に気をつける必要がある ✓ csv限定のためtsvやtxtはcsvに変換しなければならない ✓ 公式マニュアルのサンプルコードの再現が面倒 * 各コマンドを試すためのデータを自分で探す必要がある
  17. 17. 17 Mコマンドの基本 要約Mコマンド ✓ 公式マニュアルの2章を参照すると良い ✓ 今回は紹介するコマンドを扱うために必要な要素のみを抜粋 • データ型について • パラメータについて • キーブレイク処理について ✓ 公式マニュアルにはMコマンドにおけるcsvデータの定義などの 説明があるため目を通したほうが良い
  18. 18. 扱うコマンド 18 データ型について(1) 要約Mコマンド ✓ データ型の決定手順 1. すべて文字列として扱われている 2. 扱うコマンドによってデータの方が決定される 文字列 数値型文字列型日付型時刻型論理型ベクトル型
  19. 19. 19 データ型について(2) 要約Mコマンド ✓ 各データ型の詳細(公式マニュアルより抜粋) * ベクトル型はRで用いるベクトルとは異なる点に注意
  20. 20. 20 パラメータ 要約Mコマンド ✓ Mコマンドを実行するために入力するキーワード 必須といえるパラメータ
  21. 21. 21 キーブレイク処理(1) 要約Mコマンド ✓ その項目が並び替わっていることを前提として,同一の キー項目値ごとに一定の処理を行う処理方式のこと ✓ キーブレイク処理の種類 • 集計キーブレイク処理 • 結合キーブレイク処理 集計や結合を行う(k=のある)コマンドを実行する前に キーとなる列を並び替える必要がある
  22. 22. 対象項目の文字列の変化を取得して集計や結合を実行するため, 並び替えないと正しい結果を得ることができない 22 キーブレイク処理(2) 要約Mコマンド ✓ キーブレイク処理の仕組み A B C AB C B A C * 並び替え
  23. 23. 23 キーブレイク処理(3) 要約Mコマンド ✓ コードにてキーブレイク処理について確認 * 順番をランダムに並び替えたirisデータにて確認する 並び替えなしの出力結果並び替えありの出力結果
  24. 24. Mコマンド2.0 24
  25. 25. 25 Mコマンド2.0 Mコマンド2.0 ✓ 1.xから2.0にかけての変更点 • k=をもつコマンドに自動並び替え機能が追加された * それにともない新たなパラメータも追加された 集計や結合のたびに並び替え処理を行う必要がなくなった より使いやすなったので,これらから使う方は2.0がおすすめ
  26. 26. 追加されたパラメータ ✓ コードにてキーブレイク処理について確認 26 Mコマンド2.0 出力結果に順序が影響を与える コマンドには必須とされる 自動並び替えの無効化
  27. 27. よく使う コマンドの紹介 27
  28. 28. 紹介するコマンド ✓ 出現頻度の高い上位20位のコマンドから10位まで抜粋 * 中原先生のプログ (http://nakapara.jp/practice/about_mcmd) 28 よく使うコマンド紹介 ✓ 使用データ • iris : おなじみのアヤメ • airquality : Rのデータセットの一つ • Data Expo 2009のAirlineのデータ
  29. 29. 29 よく使うコマンド紹介 紹介するコマンド(1) ✓ 1位 : msortfコマンド (Rにおけるsort・order) ✓ 2位 : mcutコマンド (Rにおけるdata.frame[ , c(A,B,…)])
  30. 30. 30 よく使うコマンド紹介 紹介するコマンド(2) ✓ 3位 : mcalコマンド • 項目同士の計算や文字列の操作など用途は多岐にわたる • mcal c=‘処理の内容'のように表記する irisデータからSpeciesの項目を抜き出し, Species内の重複を削除, mcalコマンドで文字列の長さを新たな項目として追加・出力 *
  31. 31. 31 よく使うコマンド紹介 紹介するコマンド(3) ✓ 4位 : mjoinコマンド (Rにおけるmerge) ✓ 5位 : mcutコマンド (Rにおけるtable) ✓ 6位 : mselコマンド (Rにおけるsubset)
  32. 32. 32 よく使うコマンド紹介 紹介するコマンド(4) ✓ 7位 : muniqコマンド (Rにおけるunique) * mcalにて出ているため省略 ✓ 8位 : mcatコマンド (Rにおけるrbind) ✓ 9位 : mslideコマンド * mcalにて出ているため省略
  33. 33. 33 よく使うコマンド紹介 紹介するコマンド(5) ✓ 10位 : mselstrコマンド (Rにおけるsubset) * -subを追加することで部分一致を用いることができる
  34. 34. 紹介するコマンド+α(1) 34 よく使うコマンド紹介 ✓ mavgコマンド • キー項目の要素ごとの平均値を求める集計処理の一つ f=入力項目:出力項目 SpalLengthを入力して出力結果のavgSLに置換する
  35. 35. 紹介するコマンド+α(2) 35 よく使うコマンド紹介 ✓ mchkcsvコマンド • csvデータの中にはMコマンドに適していないものもある • Mコマンドで処理できるか確認し修正するコマンド 文字コードをutf8に変換, Mコマンドで処理できるよう修正, mtonullコマンドで文字列NAを欠損値に置換 * -diagを追加で確認
  36. 36. さいごに 36
  37. 37. Mコマンドを使ってみて ✓ 処理結果の可視化をするためには… 37 さいごに ✓ はやい・やすい・うまい ✓ 似た名称・用途のコマンドがいくつかあって混乱する ✓ AWKやSedとの連携でもっと便利に? ✓ Rとの連携 • ターミナルとRStudioの切り替えが面倒になってきた • system関数をうまく使えば幸せになれる?
  38. 38. 38 さいごに Mコマンドで 前処理の辛みを 減らそう!
  39. 39. ご清聴ありがとうございました 39

×