ラベル Rのこと の投稿を表示しています。 すべての投稿を表示
ラベル Rのこと の投稿を表示しています。 すべての投稿を表示

水曜日, 1月 27

Rで平均値を求めたいだけ。

あ、どうも。

Rって、便利なんですけど、データの入力を自己流でやっていると、データ処理をする時にいろいろ困ることがあります。いや、そんな変な入れ方はしてないんですけど、


このデータセットの、cont1-3の平均値と、exp1-3の平均値を出したいのよ、というだけなんです。

R業界的には、列をまとめて計算してくれるapply関数とかって、あるんですけど、


このapplyは、データセット(上記の場合はx)ごと計算することが前提のようなので、cont1-3でデータセット作り直して計算、exp1-3のデータセット作り直して計算・・・・しないといけないのか、と。それをまた、ひとつのデータセットに再編成?


(n´Д`)ハー めんどくさ。


ん~っと、思って、なんかいろいろ検索してみたところ、昨日のdplyrパッケージの中に、mutate関数というのがありまして、変数を増やせる・・・つまり、計算値を列に入れることができるのであるようなのです。



すんごい簡単にできました・・・・。
平均値を3で割って、手?計算してるところは、コマンド的にちょっと不細工なんですが、あまりの簡単さに拍子抜け。基本をあなどってはいけないよ、お嬢さん!

Rって、やっぱ便利。すごいわ。

この場合でmean関数とかが、うまいこと使えなかったのですけど、
計算したい列が3つ以上あったら、平均値のコマンド書くの逆にめんどくさいかな。わる10とか。
いや、コマンドが2行ですむなら、安いもんだ?

あ、でもこれ、列を書き足ししたいなら、x, x2, x3と、どんどん増えちゃうね・・・・。
いや、ちょっとまてよ、一回ですませれば・・・



あら、すっと、まとめてできちゃった。
てへ。
(^_-)


いつになく、冴えてるぅ。


apply関数についての超有名どころの参照ページ 
http://takenaka-akio.org/doc/r_auto/chapter_07_apply.html
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/24.html などなど


dplyrに関しては、こちらなど。
http://rstudio-pubs-static.s3.amazonaws.com/13539_9391f54271b54222a507fe8ec110d4af.html

mutateは列を追加する。
似たような働きをする関数にplyrパッケージのtransformがあるが、mutateは新しく追加した列を同一操作内で指定できる。こちらの方が便利なのでmutate使いましょう。

だそうです。

ふむふむ。

火曜日, 1月 26

Rで数える







最近、自分の話をしすぎた感があるので、解析で直面したRのお話をひとつ・・・。


上のデータは、遺伝子の発現量の値だと思って下さい。cont1-3はコントロール飼育、exp1-3は実験処理をした個体です。データは、コピペコマンド(x<-read.delim("clipboard") #windonws)で、持ってきました。実際は5万データとか扱うので、データ読み込みは、data.tableパッケージのfreadとかを使います。


何がやりたいか?

遺伝子が重複していないか調べたいんです。
→UCSCでもensembleでも、ダウンロードしたデータの遺伝子名に重複があることがあります。IDは違うんだけど、遺伝子名は同じなのよ、みたいな。

で、plyrパッケージのcountコマンドを使って、重複している遺伝子があるのか数えてみたわけです。



ふむ。なるほど。この場合、gene4-8に重複があったのだな。


で、いろいろ検索していたら、plyrパッケージ後続に、dplyrパッケージというのがあるらしくて、へーと思って、インストールしようとしたら・・・・。

パッケージ→パッケージのインストール・・・、で、示されるパッケージの中にdplyrがない(苦笑)
仕方がないので、手動で入れようとしたら、


 警告メッセージ: 
package ‘dplyr’ is not available (for R version 3.1.1) 




あれっ?
うちのRが古かったのねん・・・。


というわけで、うちのR3.11をR3.23にアップグレードしました。


まずは、installrパッケージをインストール(→そこからかい・・・)。
インストールするために、パッケージ→パッケージのインストール→リストからinstallrを選ぶ。

で、

library(installr)

で、読み込み。

updateR()

で、アップグレードしてもらう。


再起動などなどがあって、R3.2.3が立ち上がったら、dplyrパッケージのインストールに再チャレンジ。
再々再で、インストール→インストールするパッケージ・・・・で、dplyrを選ぶ。
インストールが完了するのを待って、

count関数。





ありゃ?りゃ?
いや、ワタクシはそういう答えは、求めてない・・・・。
--;)

同じ関数でも、パッケージが違えば、使い方も違うのか~・・・、いや、でも、後続のパッケージって話なのに。こんなちょっとしたことでごねるとは。


ぶつぶつ言ってもしょうがないので、カウントしたい列名の""を消してみた。





そうこれ。それぞれの遺伝子のデータ数を数えてほしかったの。

どうやら、dplyrの場合は、カウントしたい列名を""でくくる必要はないみたい。
マニュアルを読めば、分かったことなんですが、だって、ねぇ。





ちなみに両方のパッケージが入っていると、count(x,gene) のコマンドでは
”geneなんてオブジェクトはないけど?”的エラーが出てしまいます。


count(x,"gene")の方であれば、先出のリストを返してくれます。


ふぅん。

plyrとdplyrはどちらかをインストールしていれば、ことたりると思うのですが、もしかしたら、この関数のようにちょいちょい使い勝手が違う可能性があるよ。


コピペでRを使いこなす者は、オリジナルの方がどちらを使っているかに、左右されてしまい・・・・


解析をつらつら続けていると、読み込んだライブラリのことなんて忘れている頃に、なんでこんな簡単なところでエラーが出るのか、3日くらいわからない・・・という、哀しい目にあうんですよ。

しくしく。
T_T)

るまんどの消えた3日が、どなたかの糧となりますように。



最初に出てきたdata.tableパッケージのfreadについては、こちらなど。
https://oku.edu.mie-u.ac.jp/~okumura/stat/datatable.html


読み込むデータサイズが小さいならこちらのコピペコマンドを参考に
(Macとwinでコマンドが違うことに注意して下さい)
http://riseki.php.xdomain.jp/index.php?R%E3%81%A7%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80


ちなみに元素手帳の今週の異人の言葉は、

「私たちが相手にしているのは、無限なんだからね。ポール・エルディッシュ」

ポール、ちょっとおねぇ言葉・・・?
ポール・エルディッシュは数学者オイラーに次ぐ、論文数の多さで有名です。
エルディッシュ数、いいなぁ・・・。たとえ1るまんどあっても、別にたいした名誉ではないもんね。

http://dic.nicovideo.jp/a/%E3%83%9D%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%A8%E3%83%AB%E3%83%87%E3%82%B7%E3%83%A5

木曜日, 12月 10

if・・・もしも明日が、晴れ~ならば♫


Rで、オリジナルのデータセットを作ろうとして、if関数で、分岐処理?とかできなくて、悔しいです。

るまんどのRレベルは、
グーグルで調べて、調べて、調べて、コピペする、
なので、
オリジナリティーの高いif関数を自分で書くことができない・・・

という現実に直面しました。

やりたいのは、
データセットXの中の、
列Bが★だったら、列Cから40引いて引いたのと引いてないのとあわせて列C'に、
列Bが◎だったら、列Dに40足して足して足してないのとをあわせて列D’に
列A、B、C’、D’の新しいデータセットを作る。

っていうことなんですが・・・。


1日かかっても、if関数でのコマンドはできませんでした。

ifを使わずに
baseをいろいろ駆使してなら、できたんですけど・・・。
コマンドが難行にも渡るのと、
なんとなくかっこわるいので、
お見せできませんけども。

しくしく。


けものドラマ見てます。

ええと、研究と関係のない話です。 ドラマを見ています。 2018年12月現在。 獣になれない私たち。 もう、好きだ!というしかない。 松田龍平も新垣結衣も。好きな役者さんで。田中圭も黒木華も! 全然、スパッと行かない展開も、ものすごいリアルで鳥肌が立ちます。...