Rで解析:factor classの操作に便利です「forcats」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

factor classはdata.frame classと同じくらいにRを利用する上で重要な概念だと思います。でも、Levelsの概念に慣れるまでに時間が必要です。たまに操作後に必要の無いLevelsが残り面倒です。そんな面倒を解決するパッケージの紹介です。

本パッケージはggplot2やRStudioに関わるHadley氏です。今後のアップデートが非常に楽しみなパッケージです。

パッケージバージョンは0.0.0.9000。windows 7およびOS X 10.11.5のR version 3.3.1で確認しています。

スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("devtools")
devtools::install_github("hadley/forcats")

実行コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読込
library("forcats")

###データ例の作成#####
TestData1 <- factor(sample(c(LETTERS[1:5], letters[1:5]), 20, replace = TRUE))
TestData2 <- factor(sample(letters[1:5], 15, replace = TRUE), levels = letters[1:24])
#&#30906;&#35469;
TestData1
[1] a e e D C D D e B E A a A D a e A a A D
Levels: a A B C D e E
TestData2
[1] c a b d b b c c b b b a b b c
Levels: a b c d e f g h i j k l m n o p q r s t u v w x
########

#factor&#12398;&#32080;&#21512;:fct_c&#12467;&#12510;&#12531;&#12489;
#&#23550;&#35937;&#12399;list&#12467;&#12510;&#12531;&#12489;&#12391;&#25351;&#23450;
fct_c(list(TestData1, TestData2))
[1] a e e D C D D e B E A a A D a e A a A D c a b d b b c c b b b a b b c
Levels: a A B C D e E b c d f g h i j k l m n o p q r s t u v w x

#&#26465;&#20214;&#12395;&#21512;&#12358;&#22240;&#23376;&#12434;&#25277;&#20986;:fct_collapse&#12467;&#12510;&#12531;&#12489;
#&#26465;&#20214;&#20197;&#22806;&#12434;&#25351;&#23450;&#20869;&#23481;&#12391;&#32622;&#12365;&#25563;&#12360;:other_level&#12458;&#12503;&#12471;&#12519;&#12531;
#n,prop&#12458;&#12503;&#12471;&#12519;&#12531;&#12398;&#21516;&#26178;&#20351;&#29992;&#12399;&#19981;&#21487;
#&#20986;&#29694;&#25968;&#12391;&#25351;&#23450;:n&#12458;&#12503;&#12471;&#12519;&#12531;
fct_collapse(TestData1, n = 4, other_level = "Other")
[1] a e e D Other D D e Other Other A a A D
[15] a e A a A D
Levels: a A Other D e
#&#20986;&#29694;&#21106;&#21512;&#12391;&#25351;&#23450;:prop&#12458;&#12503;&#12471;&#12519;&#12531;
fct_collapse(TestData1, prop = 0.2, other_level = "Other")
[1] Other Other Other D Other D D Other Other Other Other Other Other D
[15] Other Other Other Other Other D
Levels: Other D

#&#20351;&#29992;&#12375;&#12390;&#12356;&#12394;&#12356;level&#12434;&#21066;&#38500;:fct_drop&#12467;&#12510;&#12531;&#12489;
fct_drop(TestData2)
[1] c a b d b b c c b b b a b b c
Levels: a b c d

#&#20986;&#29694;&#38918;&#12395;&#27700;&#28310;&#12434;&#20006;&#12403;&#26367;&#12360;:fct_inorder&#12467;&#12510;&#12531;&#12489;
fct_inorder(TestData1)
[1] a e e D C D D e B E A a A D a e A a A D
Levels: a e D C B E A

#&#20986;&#29694;&#25968;&#38918;&#12395;&#27700;&#28310;&#12434;&#20006;&#12403;&#26367;&#12360;:fct_infreq&#12467;&#12510;&#12531;&#12489;
fct_infreq(TestData1)
[1] a e e D C D D e B E A a A D a e A a A D
Levels: D a A e B C E

#&#27700;&#28310;&#12434;&#25351;&#23450;&#27700;&#28310;&#12434;&#20808;&#38957;&#12395;&#20006;&#12403;&#26367;&#12360;:fct_relevel&#12467;&#12510;&#12531;&#12489;
fct_relevel(TestData1, "e")
[1] a e e D C D D e B E A a A D a e A a A D
Levels: e a A B C D E

#&#27700;&#28310;&#12434;&#22793;&#26356;:fct_recode&#12467;&#12510;&#12531;&#12489;
#&#22793;&#26356;&#20869;&#23481;="&#22793;&#26356;&#12377;&#12427;&#27700;&#28310;"&#12391;&#25351;&#23450;
fct_recode(TestData1, Karada = "D", Good = "a")
[1] Good e e Karada C Karada Karada e B E A Good
[13] A Karada Good e A Good A Karada
Levels: Good A B C Karada e E

少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました