ベクトル、マトリックスやデータフレームに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.
少しでも、あなたの解析が楽になりますように!!