Rで解析:単位を付与し、そのまま計算が可能「units」パッケージ

ベクトル、マトリックスやデータフレームに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
#&#21336;&#20301;&#12434;&#20184;&#19982;
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
#&#35336;&#31639;&#20363;
print(SetTest_1 + SetTest_2)
Units: [m2]
[1]  7.0014  8.0013  9.0012 10.0011 11.0010 12.0009 13.0008 14.0007
#&#35336;&#31639;&#20363;
print(SetTest_1 * SetTest_2)
Units: [cm2*m2]
[1]  98 104 108 110 110 108 104  98

#&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;;data.frame&#12467;&#12510;&#12531;&#12489;&#12418;&#21516;&#27096;
#&#26032;&#12383;&#12395;Data_3&#12434;&#20316;&#25104;
#tidyverse&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
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 

#&#12505;&#12463;&#12488;&#12523;&#12395;SI&#21336;&#20301;&#12434;&#35079;&#25968;&#20184;&#19982;:mixed_units&#12467;&#12510;&#12531;&#12489;
MixedVec <-&#12288;1:5
Unites <-&#12288;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&#21336;&#20301;&#20197;&#22806;&#12398;&#21336;&#20301;&#12434;&#35373;&#23450;:install_unit&#12467;&#12510;&#12531;&#12489;
#&#20363;&#12360;&#12400;&#20206;&#24819;&#36039;&#29987;&#12398;Bitcoin,Symbol(XYM)&#12392;&#26085;&#26412;&#20870;&#12434;&#36861;&#21152;
#22.02.09_10:00&#38915;&#12398;&#20385;&#26684;
install_unit("BTC")
#def:1XYM&#20385;&#26684;/1BTC&#20385;&#26684;
install_unit("XYM", def = "0.00000419 BTC")
#def:1yen/1xym&#20385;&#26684;
install_unit("yen", def = "0.046210721 XYM")

#&#21033;&#29992;&#12391;&#12365;&#12427;&#21336;&#20301;&#12434;&#22522;&#28310;&#12395;&#22793;&#25563;&#12377;&#12427;:as_units&#12467;&#12510;&#12531;&#12489;
#set_unit&#12467;&#12510;&#12531;&#12489;&#12392;&#32068;&#12415;&#21512;&#12431;&#12379;&#12427;
#&#20363;&#12360;&#12400;1BTC&#12398;yen&#20385;&#26684;
set_units(as_units("BTC"), yen)
5164678 [yen]
#&#20363;&#12360;&#12400;1XYM&#12398;yen&#20385;&#26684;
set_units(as_units("XYM"), yen)
21.64 [yen]
#&#20363;&#12360;&#12400;1m&#12434;cm&#12395;&#22793;&#25563;
set_units(as_units("m"), cm)
100 [cm]

#&#30331;&#37682;&#12375;&#12383;&#21336;&#20301;&#12434;&#28040;&#21435;:remove_unit&#12467;&#12510;&#12531;&#12489;
remove_unit(symbol = c("BTC", "XYM", "yen"))
#&#20363;&#12434;&#23455;&#34892;;&#12456;&#12521;&#12540;&#12395;&#12394;&#12427;
set_units(as_units("BTC"), yen)
#Error: In &lsquo;BTC&rsquo;, &lsquo;BTC&rsquo; 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.

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

Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.
タイトルとURLをコピーしました