Rで解析:dplyr::mutateをちょっと便利に「tidier」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

「dplyr::mutate」コマンドに「dplyr::group_by」、「dplyr::order_by」、対象データ行から処理するデータ範囲(対象データから前後のデータ数)を指定などの機能を付与した「tidier::mutate」コマンドが収録されたパッケージの紹介です。

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

スポンサーリンク

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

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

# パッケージのインストール
install.packages("tidier")

実行コマンド

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

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

###データ例の作成#####
# tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 10
TestData <- tibble(Group = sample(paste0("Group", 1:2), n,
                                  replace = TRUE),
                   ID = sample(LETTERS[1:5], n, replace = TRUE),
                   X_num_Data = sample(c(1:30), n, replace = TRUE),
                   Y_num_Data = sample(c(51:100), n, replace = TRUE))

# 確認
TestData

# A tibble: 100 × 4
#    Group  ID    X_num_Data Y_num_Data
#    <chr>  <chr>      <int>      <int>
#  1 Group2 D             29         94
#  2 Group2 B             26         53
#  3 Group2 B              5         73
#  4 Group2 D              2         91
#  5 Group1 D             30         86
#  6 Group2 D             15         58
#  7 Group1 E              8         82
#  8 Group1 D             27         92
#  9 Group1 C             20         93
# 10 Group2 D             16         52
########


# dplyr::mutate()が便利になるコマンド:tidier::mutateコマンド
# dplyr::group_byを利用:.order_byオプション,
# dplyr::order_byを利用:.byオプション
# 対象データ行から処理する行範囲(対象データから前後のデータ数)を指定:.frameオプション:(前,後)
# 日付けデータを行範囲データにする場合に列を指定する:.indexオプション
TestData %>%
  tidier::mutate(X_Mean = mean(X_num_Data),
                 .order_by = c(Group, ID),
                 .by = c(Group, ID),
                 .frame = c(1, 3))

# 結果
# A tibble: 10 × 5
#    Group  ID    X_num_Data Y_num_Data X_Mean
#    <chr>  <chr>      <int>      <int>  <dbl>
#  1 Group1 C             20         93   20   :20の平均
#  2 Group1 D             30         86   28.5 :30,27の平均
#  3 Group1 D             27         92   28.5
#  4 Group1 E              8         82    8   :30,27の平均
#  5 Group2 B             26         53   15.5 :26,5の平均
#  6 Group2 B              5         73   15.5 :26,5の平均
#  7 Group2 D             29         94   15.5 :29,2,15,16の平均
#  8 Group2 D              2         91   15.5 :29,2,15,16の平均
#  9 Group2 D             15         58   11   :2,15,16の平均
# 10 Group2 D             16         52   15.5 :15,16の平均

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

タイトルとURLをコピーしました