ベクトル、マトリックスやデータフレームにSI単位を付与し、そのまま計算が可能なパッケージの紹介です。例えば1に「m」と「cm」の単位を付与し加算した場合は「1.1 m」が得られます。また、自分で単位を設定し使用することもできます。実行コマンドでは仮想資産のBitcoinとSynbol(XYM)、日本円の単位を設定し価格の計算例を記述しています。大変便利なパッケージだと思います。
パッケージのバージョンは0.8-0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("units")
実行コマンド
詳細はコメント、パッケージヘルプを確認してください。
#パッケージの読み込み
library("units")
#ベクトル,マトリックス,データフレームにSI単位を付与:set_unitsコマンド
#理論的であれば単位付きで四則計算が可能
#ベクトル例
print(Test_1 <- c(7:14))
[1] 7 8 9 10 11 12 13 14
print(Test_2 <- c(14:7))
[1] 14 13 12 11 10 9 8 7
#単位を付与
print(SetTest_1 <- set_units(Test_1, m2))
Units: [m2]
[1] 7 8 9 10 11 12 13 14
print(SetTest_2 <- set_units(Test_2, cm2))
Units: [cm2]
[1] 14 13 12 11 10 9 8 7
#計算例
print(SetTest_1 + SetTest_2)
Units: [m2]
[1] 7.0014 8.0013 9.0012 10.0011 11.0010 12.0009 13.0008 14.0007
#計算例
print(SetTest_1 * SetTest_2)
Units: [cm2*m2]
[1] 98 104 108 110 110 108 104 98
#データフレーム;data.frameコマンドも同様
#新たにData_3を作成
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
tibble(Group = paste0("Group", 1:4),
Data_1 = set_units(runif(4), s),
Data_2 = set_units(1:4, m/s)) %>%
mutate(Data_3 = Data_2*Data_1)
# A tibble: 4 x 4
Group Data_1 Data_2 Data_3
<chr> [s] [m/s] [m]
1 Group1 0.0151 1 0.0151
2 Group2 0.614 2 1.23
3 Group3 0.777 3 2.33
4 Group4 0.0840 4 0.336
#ベクトルにSI単位を複数付与:mixed_unitsコマンド
MixedVec <- 1:5
Unites <- c("m/s", "km/h", "mg/L", "g", "g")
mixed_units(MixedVec, values = Unites)
Mixed units: g (2), km/h (1), m/s (1), mg/L (1)
1 [m/s], 2 [km/h], 3 [mg/L], 4 [g], 5 [g]
#SI単位以外の単位を設定:install_unitコマンド
#例えば仮想資産のBitcoin,Symbol(XYM)と日本円を追加
#22.02.09_10:00頃の価格
install_unit("BTC")
#def:1XYM価格/1BTC価格
install_unit("XYM", def = "0.00000419 BTC")
#def:1yen/1xym価格
install_unit("yen", def = "0.046210721 XYM")
#利用できる単位を基準に変換する:as_unitsコマンド
#set_unitコマンドと組み合わせる
#例えば1BTCのyen価格
set_units(as_units("BTC"), yen)
5164678 [yen]
#例えば1XYMのyen価格
set_units(as_units("XYM"), yen)
21.64 [yen]
#例えば1mをcmに変換
set_units(as_units("m"), cm)
100 [cm]
#登録した単位を消去:remove_unitコマンド
remove_unit(symbol = c("BTC", "XYM", "yen"))
#例を実行;エラーになる
set_units(as_units("BTC"), yen)
#Error: In ‘BTC’, ‘BTC’ is not recognized by udunits.
#See a table of valid unit symbols and names with valid_udunits().
#Custom user-defined units can be added with install_unit().
#See a table of valid unit prefixes with valid_udunits_prefixes().
#Prefixes will automatically work with any user-defined unit.
少しでも、あなたの解析が楽になりますように!!