Rで解析:データにGroup番号やGroup内での出現順を付与する方法

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

データにGroup番号やGroup内での出現順、そして、行位置の列を「tidyverse」パッケージまたは「dplyr」パッケージを利用して付与する方法です。非常に簡単に付与することができます。ポイントは「group_by」コマンドで基準となるGroupの列を指定することです。

なお、紹介するコマンドは「mutate」コマンドだけでなく、「summarise」コマンドなどと組み合わせて使用することが可能です。

「dplyr」パッケージは「tidyverse」パッケージに含まれています。実行コマンドでは「tidyverse」パッケージを利用しています。

パッケージバージョンは2.0.0、実行コマンドはR version 4.3.1で確認しています。

スポンサーリンク

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

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

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

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

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

###データ例の作成#####
set.seed(1234)
TestData <- tibble(Group = sample(LETTERS[1:4], size = 8, replace = TRUE),
                   Data_1 = rep(1:4, time = 2),
                   Data_2 = rep(5:8, time = 2)) %>%
  group_by(Group)

#&#30906;&#35469;
#4&#12388;&#12398;Group&#12364;&#25351;&#23450;&#12373;&#12428;&#12390;&#12356;&#12427;
TestData
# A tibble: 8 &times; 3
#  Groups:   Group [4]
#  Group Data_1 Data_2
#<chr>  <int>  <int>
#1 D          1      5
#2 D          2      6
#3 B          3      7
#4 B          4      8
#5 A          1      5
#6 D          2      6
#7 C          3      7
#8 A          4      8
#######

#Group&#30058;&#21495;&#12398;&#21015;&#12434;&#20184;&#19982;&#12377;&#12427;:dplyr::cur_group_id&#12467;&#12510;&#12531;&#12489;
TestData %>%
  mutate(Group_No = cur_group_id(),
         .before = Group) %>%
  arrange(Group_No)

# A tibble: 8 &times; 4
# Groups:   Group [4]
# Group_No Group Data_1 Data_2
#   <int> <chr>  <int>  <int>
#1        1 A          1      5
#2        1 A          4      8
#3        2 B          3      7
#4        2 B          4      8
#5        3 C          3      7
#6        4 D          1      5
#7        4 D          2      6
#8        4 D          2      6

#Group&#20869;&#12391;&#12398;&#20986;&#29694;&#38918;&#12398;&#21015;&#12434;&#20184;&#19982;&#12377;&#12427;:dplyr::row_number&#12467;&#12510;&#12531;&#12489;
TestData %>%
  mutate(Group_in_id = row_number(),
         .before = Group) %>%
  arrange(Group)

# A tibble: 8 &times; 4
# Groups:   Group [4]
#  Group_in_id Group Data_1 Data_2
#        <int> <chr>  <int>  <int>
#1           1 A          1      5
#2           2 A          4      8
#3           1 B          3      7
#4           2 B          4      8
#5           1 C          3      7
#6           1 D          1      5
#7           2 D          2      6
#8           3 D          2      6

#&#34892;&#20301;&#32622;&#12398;&#21015;&#12434;&#20184;&#19982;&#12377;&#12427;:dplyr::cur_group_rows&#12467;&#12510;&#12531;&#12489;
TestData %>%
  mutate(Group_in_id = cur_group_rows(),
         .before = Group) %>%
  arrange(Group)

# A tibble: 8 &times; 4
# Groups:   Group [4]
#  Group_in_id Group Data_1 Data_2
#       <int> <chr>  <int>  <int>
#1           5 A          1      5
#2           8 A          4      8
#3           3 B          3      7
#4           4 B          4      8
#5           7 C          3      7
#6           1 D          1      5
#7           2 D          2      6
#8           6 D          2      6

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

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