羨ましくもシンパシー感じちゃってる中年に喝を入れるためだ。そもそもこのブログの目的は当然ながら、中途半端な能力とキャリアと多くの贅肉を積んでしまった自分自身が、このままトラディショナルな単線を走らせるだけでは廃線になってしまう危機感を感じ、複線にしつつ車両をアップグレードしようとした際に、S[ピー]SSシンタックスチョットカケル野郎から分析プログラミング多少書ける野郎になりたかったから始めたものだ。実際のところはなかなかうまくはいっていない。何がって自分にやる気と元気と生産能力が致命的に欠けているってところだ。気が向いた時にこうして便所で尻を拭く紙にもならない駄ポエムを書き散らすしかできない。何やら申し訳ないやら僕のSEO対策完ぺきやん?的な要らぬ自信をつけてしまったりとかして、そんな訳でまた何か書きたかったんだけどネタが無くて書けなかったのをポエミングテーマを拾って消費するよ、という話。本題:●●キャリア、というラベリングこの手の話で非常によく出てくるのが「エンジニアのキャリア」というやつ。僕も「リサーチャー」として、僕はどこへ進むべきか...とずっと悩んでいたしなんなら今もぐずぐず悩んでるが、だからこそ言わせてもらう。お前はリサーチャーmrkではない。mrkがリサーチャーを名乗っており、Rおじさんになりたいオッサンを自称し、Twitter上でデータゆうしゃになりたいだの、いいやデータバーテンダーだ、優しい止まり木なんだ、とか訳の分からないことをほざいているんだ。何が言いたいかというと、「結局自分のキャリアは自分で決めるしかなくて、なんならお前はもう決めている」ということだ。ひでぶとなるのかウボァとなるのか生きるのかは、............ここまでは、ツイッターTLに触発されていつだったか、もう半年は前だと思うけど、うわーってなって書いた記憶が微かにある。「分析系キャリア」などと名付けたところで別にそんなトラッキングルートが確立されるわけでもなく、待遇改善のため、と言うならとにかく自分の信用度を高めていく他ない、もう自分は満足で後進のためにと言うなら結構なことかもしらんが、それに乗っかれば安心なわけでもないし安易なご案内は迷子を増やすだけやで、と言いたかったように記憶している。今言いたいのはただ一つ、カチョー、いま、迷子になってます。09:13哀しみの果て(分析系キャリア、という罠)Tweet広告を非表示にするもっと読むコメントを書く2018-09-04gghighlightがステキすぎることをポエむ。先日、Tokyo.R#72に参加しました。何をライバル出現などとおこがましいことを考えているんだこの能力欠損野郎はと、改めて襟を正す思いでした。肝心のgghighlightに関する記述はユタニさんの公式系資料とブログのみで、なかなか他を見つけられないでいます。いうものって製作者に配慮して書かないものなのか?とかよく分かっていないので、とにかく愛しのgghighlightについてポエみたい、それが本記事です。基本的な使い方についてはユタニさんのブログ等を見ていただくとして、notchained.hatenablog.com「こんなこと言ってたからこんな風にしてみたよ!」ってなことを紹介していきたいと思います。1500)特に素晴らしいのはラベルはい、ラベルです。これがgghighlightをハイライトしたいところです。なにがいいって、ラベルの自由度の高さだと思っています。このラベル、複数の変数を重ねられるんですよね。ggrepelってテキストズラすだけで使いづらいなーと思ってたので、こんな感じだと万々歳です*1。いうことを利用すると、こんな事が出来るわけです。観測データの定期報告に今まではイチイチ作ったグラフに対して「ココがこうだ。早い話がくそ面倒なわけです。僕は、出来ないなりに以下のようなステップで少しずつ進化させて来たのだけれど、Excelグラフ作成。丸とか四角とかで囲う。吹き出しとかつけて説明...Rでグラフ作成。画像ファイル化してPPT等に貼付けてその後丸以下略Rmarkdownでダッシュボード自動作成。図をPPTに貼り付けて以下略Rmarkdownでグラフ&スライド一括作成。「次はanotateとか使って気になるデータとか強調しようかなーでもハイライトしたいトコ選ぶとかだるいなー」とか思ってたので、このタイミングで出会えたことはまさに僥倖!!!だったわけです。はい、ほぼコレで言いたいことは大体終わった。あとは色々試したのを載せ...ようかと思ったけど無駄に長くなるのでそちらはQiitaで。あ、ちなみにここで「書かなくてよくなった」のは、あくまでも「結果が(とりあえず観測できた事実として)どうだったか」までであって、そのあとの洞察(解釈)は別物です。そんなん流石に自動化できないしそれがあったら僕は用済みだ。このコメントさえあれば、あとはまぁグラフ見ながら考えられるしなんならその場で解釈してもごまかせる大丈夫!!!*2あとよくわからないものuse_group_by():コレはggplotの段階でグループ指定してあげなきゃなやつで使う?それともgrouped_dfとかに使う?facetしようとするとしばしばものすごい時間かかってエラーになるかなんなら落ちたりする。やり方がまずいのか、ちょっとケースを整理しなきゃ。以上ですよ!*1:多分元々geom_text()でも出来てたから、それと同じと考えればフツーだけど、同じように出来るってことが素晴らしいわけで。*2:前職の業界用語なのかなんなのか、この辺は「1次コメント」などと呼んでいた。報告書にとりあえず数字の読めるスタッフさんにひたすら書いてもらって、あとで解釈をいれていく、みたいな...。労働集約的だし、自分の身にもならなくてしんどかった。13:20gghighlightがステキすぎることをポエむ。「生徒会室で校舎の略地図を罫線でかく」ために触れたのが初めてだよ!そんなボクも、SUM、IF、INDEX、MID、SUMPRODUCT、OFFSETと、数々の関数と夜を共に過ごしてきたけど*1、やっぱりこれまでの人生で一番のExcelでの大仕事は、Excelのセルサイズを細かな方眼紙状にして当時の職場の事務所引越しのレイアウト案をExcelで作ったことかな!ちなみに自宅の引越しでも毎回間取り図書いてた!Excelで!しかし別れはやってくるそんなExcel教の私も、Rの便利さに慣れ、なるべく業務のほとんどをRでこなしたくなってきた近年。出会いがあれば、また別れも訪れるものですね。「言語とかマヂ無理っす」とか「えー面倒だからmrkさんがやってくださいよぉ〜」とか言われて、その度に涙を枕で濡らしていたものです。前々から進めたかったshinyアプリ作成のネタとして、「RでVLOOKUPをする」アプリを作ってみました。VLOOKUPといってもやるのはJOINです。参照列数とかそういうのは無い。そこはこまけぇこたぁいいんだよ!!の精神で、SEO対策的にもココはひとつ、「RでVLOOKUPをやります」と宣言します。いいね?で、とりあえずやってみました真面目にshinyの仕組みをまとめるのは今度にするとして(仕組みって言っても雰囲気ね?)、まずはShiny内でやりたい処理を考えてみる。FALSE)非常にシンプル。結合のキー変数の選択ポチッとな(結合)マージ後テーブルの表示マージ後データのダウンロードシンプルだけど、割とやることいっぱい。結合にはdplyrを使ったんだけど、dplyrの***_JOIN()は結合キーを文字列で指定する必要があって、これで苦戦しました。server)出来たのでここまででQiitaにまとめました。与太話を読みたくない場合はそちらへGO!CSVだけでExcelは語れぬとりあえず作ったのはread.csv()を基本としたツールですが、それだけじゃ満足できないワガママボディがいっぱいいそうです。ちなみにCSV、コンマ・セパレーテッド・バリューという言葉だけでなく、クリエーティング・シェアド・バリュー(共通価値の創造)なる訳もあります。いうことで、Excelファイルも対応させるよね。Excelファイルはreadxlパッケージを使います。ちなみにご存知Excel御大にはCSVとは違ってシートという概念がございます。あと、せっかくdplyrでマージ後させるんならleft_join()だけではなく、各種JOINも選びたくなるよね!...ってんで、そこも選べるようにしました。文字列を繋げてRの処理として評価してやる、というもの。いうのがNSEっていうの?逆?オジサンわかんない!あ、あとあと忘れちゃいけない、日本語を使うんなら、文字コードも対応しないと。想定ユーザはWindowsの人だから、SJISのみです。helpText(paste0("説明:1~5の手順で2つのファイルをマージしてください。","\r\n","csvとExcelの両方対応してます。文字コード対応(in-out)ヘルプテキスト(改行上手くいってない)出力自体はcsvのみ。あ、も一つ忘れてたアップロードファイルのサイズ上限をデフォルトの5MBから100MBに変更そもそも(超)軽量なテーブルなんざVLOOKでいいので、これが出来なきゃなんの意味もないガラクタになるところだった。ExcelVLOOKUPより超高速でJOIN!ということで、何でもかんでもExcelでやらない、ちょっとしたことでとても業務がラクになることを体験してもらうべく、shinyでカンタンなデータマージツールを作りました。shiny、RUNしてみて初めて抜け漏れが多々見つかってコレもかよ。shiny!!!*1:残業で。残念なのはX軸、Y軸にZ軸を含めた3次元までしか表せないってところです。思ったら、フツーにありました。github.com色んな説明にね、「矩形(くけい)」って書いてあったの。★コレ長方形ってことだったのね〜お父さん35歳になって初めて知ったよ〜長方形って書いて!!!(書いてあった)とりあえずまずは公式の例をコピーして書いてみたけど、なんかしっくりこない。コレでやりたいこと出来るのか全くピンと来ない。Yahoo!検索(画像)anotateの進化版?みたいな。いや実際そういうことがしたかったんだけど、geom_barみたいなものと同じように思ってた。何はともあれやってみる。1))欲しかったのは、各描画要素が要素ごとに異なる範囲を示す二次元グラフで、グラフ要素同士は重なってて良い(ってか重なって欲しかった)ものなので、コレピッタリ。「始点と長さ」ということではなく、あくまで2つの座標を示すものらしいです。んだもんで、座標が同じだとただの点。xmax・ymaxはあくまで座標を表すらしい。0)))例えば、「その要素の最小値-最大値」の範囲を示すみたいなことが出来ますね。product))お分かりいただけるだろうか...?コレって、データ整理にものすごく役立つんですよね。1つ1つの次元を1つずつグラフにしていってもちっとも分からないしアタマが追いつかないんですが、まとめてみるとアラ不思議!ということで、geom_rect、この夏、オススメのグラフですよ.........!?※ちなみに当初やりたかったのはひし形でxy軸と関係のない別の二次元を付けたかったんですが、それは流石に分かりづらいですかね...(今のgeom_rectでも書けるけど)。*1:そんなものは知らぬ*2:geom_pointでsizeを指定しますが詳しくは他の方のブログなどをおググりください*3:他にもcontourとか足すのもアリだけど*4:ランダムなので値によってはわけわからんです。ミミズがニョロニョロするような値の方が見やすいです。14:35バブルチャートではなく四角でグラフ化~geom_rect()ってなんだTweet広告を非表示にするもっと読むコメントを書く2018-08-12dplyrで平均年齢を計算する。Rで分析はい、もうなんでもいいから小出しで記事更新を試みます。いうことで、世のデータサイエンティストさんとは縁遠い、「平均年齢の求め方」を書きます。スマートではない感じです。(単に仕事で計算したからネタにしただけです)。TRUE)))mutate部分をsummariseの中でやりゃ一発かしらね。16:46dplyrで平均年齢を計算する。Tweet広告を非表示にするもっと読むコメントを書く2018-07-15多重コレスポンデンス分析やってみた。下記のサイトを参考に書いてみただけで、なんらオリジナルな話はありません。そもそもオリジナルなものなんて書いてないか。何でもかんでも分析者のお気持ち次第っていうか、それにしたってぶっこむ変数によって世界観が360°変わる厄介者な認識です(笑っていいんだよ?)。MCAをするにはみんな大好きSPSSのオプションとかをご購入してもれなくIBMさんに重課金するのか、我らの心の友(勝手に認定)、HADでも可能ですね。我らがHADをもってしても、一回一回まわしていくのは面倒。FactoMineRというのが手軽そう&便利そうなのでそちらでやってみました。どんな変数をぶっこむか、先にリストを作っときます。"always"))コレポンをぐるぐる、可視化まで。教えていただいた解決策は「処理を関数化する」ということでした。それにしてもリスト処理、こんなん出来るんだなーと目からウロコでした。ことに触発された記事を書こうとしたんだけどさっきいったん断念。13:18多重コレスポンデンス分析やってみた。goな今年を振り返る哀しみの果て(分析系キャリア、という罠)gghighlightがステキすぎることをポエむ。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。