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

Mais conteúdo relacionado

Semelhante a Mコマンド入門

初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
Oonishi Takaaki
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
 

Semelhante a Mコマンド入門 (20)

C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
Toxic comment classification
Toxic comment classificationToxic comment classification
Toxic comment classification
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
C# design note sep 2014
C# design note sep 2014C# design note sep 2014
C# design note sep 2014
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
良いコードとは
良いコードとは良いコードとは
良いコードとは
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacks
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4Data-Intensive Text Processing with MapReduce ch4
Data-Intensive Text Processing with MapReduce ch4
 
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 

Mais de weda654 (7)

Juliaで前処理
Juliaで前処理Juliaで前処理
Juliaで前処理
 
わかりやすいパターン認識_3章
わかりやすいパターン認識_3章わかりやすいパターン認識_3章
わかりやすいパターン認識_3章
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
 
続・わかりやすいパターン認識_3章
続・わかりやすいパターン認識_3章続・わかりやすいパターン認識_3章
続・わかりやすいパターン認識_3章
 
わかパタ 1章
わかパタ 1章わかパタ 1章
わかパタ 1章
 
Data frameあれこれ
Data frameあれこれData frameあれこれ
Data frameあれこれ
 
Dummiesパッケージ
DummiesパッケージDummiesパッケージ
Dummiesパッケージ
 

Mコマンド入門