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)) 
#確認
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
########

・数字に関する書式設定

###数字に関する書式設定#####
#浮動小数点数:%f
fapply(TestData$Data2, "%f")
[1] "1425.000000" "1132.000000" "1017.000000" "1486.000000" "995.000000" 

#表示する小数点の桁数:%.xf;[x]を表示したい桁数で四捨五入
#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"

#空白を挿入し文字数を揃えて右寄せ:"%x.yf;[x]は文字数,[y]は表示する小数点の桁数
fapply(TestData$Data2, "%6.0f")
[1] "  1425" "  1132" "  1017" "  1486" "   995"
#左寄せはxの前にマイナスを付与
fapply(TestData$Data2, "%-6.0f")
[1] "1425  " "1132  " "1017  " "1486  " "995   "
#0を挿入し文字数を揃えて右寄せ
fapply(TestData$Data2, "%06.0f")
[1] "001425" "001132" "001017" "001486" "000995"

#指数表示:%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"

#倍精度値:%a
fapply(TestData$Data2, "%a")
[1] "0x1.644p+10" "0x1.1bp+10"  "0x1.fc8p+9"  "0x1.738p+10" "0x1.f18p+9" 

###参考:baseのsprintfコマンドでの例#####
#fapplyコマンドと同じ結果が得られるので結果は省略
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)
########

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

###年月日や時間に関する書式設定#####
#年月日:%Y;年,%m;月,%d;日
#時間:%H;時間,%M;分,%S;秒

##例1:Data1の年月日や時間を入れ替えて書式を変更
fapply(TestData$Data1, format = "%d/%m/%Y %S秒%H時%M分")
[1] "10/04/2018 39秒14時39分" "17/11/2004 46秒21時46分" "26/08/2013 55秒05時55分"
[4] "04/10/2012 33秒08時33分" "23/05/2010 52秒02時52分"

##例2:Data1の年月日に変更
fapply(TestData$Data1, format = "%Y-%m-%d")
[1] "2018-04-10" "2004-11-17" "2013-08-26" "2012-10-04" "2010-05-23"

##例3:Data1の時,分に変更
fapply(TestData$Data1, format = "%H:%M")
[1] "14:39" "21:46" "05:55" "08:33" "02:52"

###参考:baseのformatコマンドでの例#####
#fapplyコマンドと同じ結果が得られるので結果は省略
format(TestData$Data1, "%d/%m/%Y %S秒%H時%M分")
format(TestData$Data1, "%Y-%m-%d")
format(TestData$Data1, "%H:%M")
########

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

スポンサードリンク

スポンサードリンク