Rで解析:データの書式設定例

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

日常で使いそうな数字や年月日や時間に関する書式設定に関する紹介です。コマンド例ではデータの書式変更に便利な「fmtr」パッケージと得られる結果は同じですが、参考までにbaseの「sprintf」コマンド、「format」コマンドを紹介しています。

「fmtr」 パッケージバージョンは1.5.5。windows11のR version 4.1.2で確認しています。

スポンサーリンク

コマンド例

・実行準備

###データ例の作成#####
#fmtrパッケージを読み込み
#fmtrパッケージがなければインストール
if(!require("fmtr", quietly = TRUE)){
  install.packages("fmtr");require("fmtr")
}

#tidyverseパッケージを読み込み
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#乱数の固定
set.seed(1980)
#データ例の作成
n <- 5
TestData <- tibble(Group = sample(paste0("Group", 1:5),
                                  n, replace = TRUE),
                   Data1 = as.POSIXct(sample(paste0(2000:2020, "-", 1:12, "-", 1:30,
                                                    " ",0:24, ":", 0:59, ":", 0:59),
                                             n, replace = TRUE), tz = "Japan"),
                   Data2 = sample(900:1500,
                                  n, replace = TRUE)) 
#&#30906;&#35469;
TestData
# A tibble: 5 x 3
Group  Data1               Data2
<chr>  <dttm>              <int>
1 Group2 2017-12-30 09:59:59  1425
2 Group1 2002-12-24 23:23:23  1132
3 Group2 2016-05-17 16:16:16  1017
4 Group3 2003-04-04 03:03:03  1486
5 Group4 2012-01-13 12:12:12   995
########

・数字に関する書式設定

###&#25968;&#23383;&#12395;&#38306;&#12377;&#12427;&#26360;&#24335;&#35373;&#23450;#####
#&#28014;&#21205;&#23567;&#25968;&#28857;&#25968;:%f
fapply(TestData$Data2, "%f")
[1] "1425.000000" "1132.000000" "1017.000000" "1486.000000" "995.000000" 

#&#34920;&#31034;&#12377;&#12427;&#23567;&#25968;&#28857;&#12398;&#26689;&#25968;:%.xf;[x]&#12434;&#34920;&#31034;&#12375;&#12383;&#12356;&#26689;&#25968;&#12391;&#22235;&#25448;&#20116;&#20837;
#fapply(1.5684, "%.2f")
#[1] "1.57"
#fapply(1.5634, "%.2f")
#[1] "1.56"
fapply(TestData$Data2, "%.2f")
[1] "1425.00" "1132.00" "1017.00" "1486.00" "995.00"

#&#31354;&#30333;&#12434;&#25407;&#20837;&#12375;&#25991;&#23383;&#25968;&#12434;&#25539;&#12360;&#12390;&#21491;&#23492;&#12379;:"%x.yf;[x]&#12399;&#25991;&#23383;&#25968;,[y]&#12399;&#34920;&#31034;&#12377;&#12427;&#23567;&#25968;&#28857;&#12398;&#26689;&#25968;
fapply(TestData$Data2, "%6.0f")
[1] "  1425" "  1132" "  1017" "  1486" "   995"
#&#24038;&#23492;&#12379;&#12399;x&#12398;&#21069;&#12395;&#12510;&#12452;&#12490;&#12473;&#12434;&#20184;&#19982;
fapply(TestData$Data2, "%-6.0f")
[1] "1425  " "1132  " "1017  " "1486  " "995   "
#0&#12434;&#25407;&#20837;&#12375;&#25991;&#23383;&#25968;&#12434;&#25539;&#12360;&#12390;&#21491;&#23492;&#12379;
fapply(TestData$Data2, "%06.0f")
[1] "001425" "001132" "001017" "001486" "000995"

#&#25351;&#25968;&#34920;&#31034;:%e
fapply(TestData$Data2, "%e")
[1] "1.425000e+03" "1.132000e+03" "1.017000e+03" "1.486000e+03" "9.950000e+02"
fapply(TestData$Data2, "%.1e")
[1] "1.4e+03" "1.1e+03" "1.0e+03" "1.5e+03" "1.0e+03"

#&#20493;&#31934;&#24230;&#20516;:%a
fapply(TestData$Data2, "%a")
[1] "0x1.644p+10" "0x1.1bp+10"  "0x1.fc8p+9"  "0x1.738p+10" "0x1.f18p+9" 

###&#21442;&#32771;:base&#12398;sprintf&#12467;&#12510;&#12531;&#12489;&#12391;&#12398;&#20363;#####
#fapply&#12467;&#12510;&#12531;&#12489;&#12392;&#21516;&#12376;&#32080;&#26524;&#12364;&#24471;&#12425;&#12428;&#12427;&#12398;&#12391;&#32080;&#26524;&#12399;&#30465;&#30053;
sprintf("%f", TestData$Data2)
sprintf("%.2f", TestData$Data2)
sprintf("%6.0f", TestData$Data2)
sprintf("%-6.0f", TestData$Data2)
sprintf("%06.0f", TestData$Data2)
sprintf("%e", TestData$Data2)
sprintf("%.1e", TestData$Data2)
sprintf("%a", TestData$Data2)
########

・年月日や時間に関する書式設定

###&#24180;&#26376;&#26085;&#12420;&#26178;&#38291;&#12395;&#38306;&#12377;&#12427;&#26360;&#24335;&#35373;&#23450;#####
#&#24180;&#26376;&#26085;:%Y;&#24180;,%m;&#26376;,%d;&#26085;
#&#26178;&#38291;:%H;&#26178;&#38291;,%M;&#20998;,%S;&#31186;

##&#20363;1:Data1&#12398;&#24180;&#26376;&#26085;&#12420;&#26178;&#38291;&#12434;&#20837;&#12428;&#26367;&#12360;&#12390;&#26360;&#24335;&#12434;&#22793;&#26356;
fapply(TestData$Data1, format = "%d/%m/%Y %S&#31186;%H&#26178;%M&#20998;")
[1] "10/04/2018 39&#31186;14&#26178;39&#20998;" "17/11/2004 46&#31186;21&#26178;46&#20998;" "26/08/2013 55&#31186;05&#26178;55&#20998;"
[4] "04/10/2012 33&#31186;08&#26178;33&#20998;" "23/05/2010 52&#31186;02&#26178;52&#20998;"

##&#20363;2:Data1&#12398;&#24180;&#26376;&#26085;&#12395;&#22793;&#26356;
fapply(TestData$Data1, format = "%Y-%m-%d")
[1] "2018-04-10" "2004-11-17" "2013-08-26" "2012-10-04" "2010-05-23"

##&#20363;3:Data1&#12398;&#26178;,&#20998;&#12395;&#22793;&#26356;
fapply(TestData$Data1, format = "%H:%M")
[1] "14:39" "21:46" "05:55" "08:33" "02:52"

###&#21442;&#32771;:base&#12398;format&#12467;&#12510;&#12531;&#12489;&#12391;&#12398;&#20363;#####
#fapply&#12467;&#12510;&#12531;&#12489;&#12392;&#21516;&#12376;&#32080;&#26524;&#12364;&#24471;&#12425;&#12428;&#12427;&#12398;&#12391;&#32080;&#26524;&#12399;&#30465;&#30053;
format(TestData$Data1, "%d/%m/%Y %S&#31186;%H&#26178;%M&#20998;")
format(TestData$Data1, "%Y-%m-%d")
format(TestData$Data1, "%H:%M")
########

少しでも、あなたの解析が楽になりますように!!

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