いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】data.frameの列名を綺麗にしたり集計したい

・お題:スプレッドシートで作った表をRにデータフレームとして読み込んだら、列名が変で扱いづらい。うまいこと修正したい。

 

・janitorというパッケージを使う。正しいことは以下を参照いただきたい。インストールは割愛。

https://cran.r-project.org/web/packages/janitor/vignettes/janitor.html

 

・読み込む。

> library(tidyverse)#Rを使いやすくする
> library(janitor)

 

・適当にスプレッドシートでデータを作成して、コピーしてクリップボードから読み込む。スプレッドシートで作成した表は以下。

 

クリップボードにコピーして読み込んだ。

> df <- read.table("clipboard",
+                  sep = "\t",
+                  header = TRUE,
+                  row.names = 1)
> df

以下略

 

・スペースが自動でドットに変わったりする。デフォルトの機能で、make.namesという関数があるが、これを使ったような感じになっている。この関数はdata.frameの列名以外にも使えるみたいなので、これはこれで便利。

・これをアンダーバーなどにうまいこと変換するには、janitorのclean_names関数を使う。

> df <- clean_names(df)
> df

 

ラクダ表記をアンダーバーで区切って小文字にする機能もあるっぽい。

・続いて、test_1列のaとかbの出現頻度を集計してみる。デフォルトならtable機能を使う。要素の出現頻度を数えてくれる。

> table(df$test_1)

 

・janitorのtablyl関数だと、割合も出してくれる。

> tabyl(df, test_1)

・割合を%表示にしたければ、ちょっと付け足せばOK。

> df %>% 
+   tabyl(., test_1) %>% 
+   adorn_pct_formatting(digits = 2)

 

・2軸の集計もできる。例えば、先のdfのtest_1とtest_2で集計してみる。

> df %>% 
+   tabyl(., test_1, test_2)

・test_1ごとの割合も算出して、少しまとめる。
> df %>% 
+   tabyl(., test_1, test_2) %>%
+   adorn_totals(., "col") %>% #集計列を作成
+   adorn_percentages(., "row") %>% #行ごとの割合を算出
+   adorn_pct_formatting(., digits = 2) %>% #%として表示
+   adorn_ns(.) %>% #カウントも表示
+   adorn_title(.) #test_2も表示

 

・例が悪かったので、もう少しうまくできるはず。。

 

おわり