本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:オブジェクトを次元データフレーム(dibble)に変換する「dibble」パッケージ

オブジェクトを次元データフレーム(dibble)に変換するパッケージの紹介です。array classなどを変換することで計算処理が楽になると思います。

パッケージのバージョンは0.3.0。windows 11のR version 4.4.1で確認しています。

パッケージのインストール

下記コマンドを実行してください。

# パッケージのインストール
install.packages("dibble")
スポンサーリンク

実行コマンド

詳細はコメントやコマンドヘルプを確認してください。

# パッケージの読み込み
library("dibble")

### データ例の作成 #####
Array_01 <- array(1:6, c(3, 3),
                  list(軸_01 = letters[1:3],
                       Test_02 = letters[1:3]))
Array_02 <- array(1:3, 3,
                  list(軸_02 = letters[1:3]))
# classの確認
class(Array_01)
[1] "matrix" "array" # Array_02も同じ

# array classの計算はエラー
Array_01 * Array_02
# Array_01 * Array_02 でエラー: 適切な配列ではありません
########

# オブジェクトを次元データフレーム(dibble)に変換する:as_dibbleコマンド
dibble_01 <- as_dibble(Array_01)

# classの確認
class(dibble_01)
[1] "ddf_col"

# 構造の確認:次元付きのデータになっている
str(dibble_01)
'ddf_col' int [1:3, 1:3] 1 2 3 4 5 6 1 2 3
- attr(*, "dim_names")=List of 2
..$ 軸_01  : chr [1:3] "a" "b" "c"
..$ Test_02: chr [1:3] "a" "b" "c"

# コンソールに表示
Array_01
#      Test_02
# 軸_01 a b c
#     a 1 4 1
#     b 2 5 2
#     c 3 6 3

## 使用例 
dibble_02 <- as_dibble(Array_02)

# 乗算:新しい次元名を作成するとエラーが出るが内容に計算結果は正しい
dibble_01 * dibble_02

# A dibble:   27
# Dimensions: 軸_01 [3], Test_02 [3], 軸_02 [3]
#     軸_01 Test_02 軸_02     .
#     <chr> <chr>   <chr> <int>
#   1 a     a       a         1
#   2 a     a       b         2
#   3 a     a       c         3
#   4 a     b       a         4
#   5 a     b       b         8
#   6 a     b       c        12
#   7 a     c       a         1
#   8 a     c       b         2
#   9 a     c       c         3
#  10 b     a       a         2
# # ℹ 17 more rows
# # ℹ Use `print(n = ...)` to see more rows
# 警告メッセージ:
#   1: Broadcasting,
# New axes, dim_names = c("軸_01", "Test_02", "軸_02") 
# 2: Broadcasting,
# New axes, dim_names = c("軸_01", "Test_02", "軸_02") 

# 警告メッセージなしで計算する:broadcastコマンド
Broad_Result <- broadcast(dibble_01 * dibble_02,
                          dim_names = c("軸_01", "Test_02", "軸_02"))
# 確認
Broad_Result
# A dibble:   27
# Dimensions: 軸_01 [3], Test_02 [3], 軸_02 [3]
#    軸_01 Test_02 軸_02     .
#    <chr> <chr>   <chr> <int>
#   1 a     a       a         1
#   2 a     a       b         2
#   3 a     a       c         3
#   4 a     b       a         4
#   5 a     b       b         8
#   6 a     b       c        12
#   7 a     c       a         1
#   8 a     c       b         2
#   9 a     c       c         3
#  10 b     a       a         2
# ℹ 17 more rows
# ℹ Use `print(n = ...)` to see more rows

## "ddf_col"はデータフレームのように操作できる
# 「dibble」パッケージでサポートしているコマンド
Broad_Result %>%
  filter(軸_02 == "a") %>%
  rename(テスト_02 = 軸_02) %>%
  select(Test_02, テスト_02) # selectは列順を変える
# A dibble:   9
# Dimensions: Test_02 [3], テスト_02 [1], 軸_01 [3]
#   Test_02 テスト_02 軸_01     .
#   <chr>   <chr>     <chr> <int>
#   1 a       a         a         1
#  2 a       a         b         2
#  3 a       a         c         3
#  4 b       a         a         4
#  5 b       a         b         5
#  6 b       a         c         6
#  7 c       a         a         1
#  8 c       a         b         2
#  9 c       a         c         3

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

このコードの続きをAIに聞く

スポンサーリンク
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.