縦のデータ と横のデータ

縦のデータ

使用するパッケージ(パッケージのインストール)。パッケージtidyverseには、tidyr、dplyr、ggplot2などが含まれます。

R
library(tidyverse) 

データセットの作成

R
ID <- rep(c(1:10), 2)
dat1 <- c(-0.65, -0.58, 1.98, 0.98, 1.55, -0.05, 0.10, -1.35, 1.24, -0.28)
dat2 <- c(1.31, 2.39, 2.87, 2.25, 2.33, 5.32, 3.13, 1.21, 1.50, 0.97)

data <- c(dat1, dat2)
period <- c(
    rep("pre", length(dat1)),
    rep("post", length(dat2))
)

long <- data.frame(ID, period, data)
print(long)
> print(long)
   ID period  data
1   1    pre -0.65
2   2    pre -0.58
3   3    pre  1.98
4   4    pre  0.98
5   5    pre  1.55
6   6    pre -0.05
7   7    pre  0.10
8   8    pre -1.35
9   9    pre  1.24
10 10    pre -0.28
11  1   post  1.31
12  2   post  2.39
13  3   post  2.87
14  4   post  2.25
15  5   post  2.33
16  6   post  5.32
17  7   post  3.13
18  8   post  1.21
19  9   post  1.50
20 10   post  0.97

このサイトではこのタイプを“縦のデータ“と定義します。

縦のデータを横のデータに変換

上記で作成した縦のデータ(long)を横のデータ(wide)に変換します

R
wide <- tidyr::spread(long, key=period, value=data)
wide <- wide %>% select(ID, pre, post)
print(wide)
> print(wide)
   ID   pre post
1   1 -0.65 1.31
2   2 -0.58 2.39
3   3  1.98 2.87
4   4  0.98 2.25
5   5  1.55 2.33
6   6 -0.05 5.32
7   7  0.10 3.13
8   8 -1.35 1.21
9   9  1.24 1.50
10 10 -0.28 0.97

横のデータを縦のデータに変換

R
tate_2 <- gather(wide, key=period, value=data, -ID)
print(tate_2)
> print(tate_2)
   ID period  data
1   1    pre -0.65
2   2    pre -0.58
3   3    pre  1.98
4   4    pre  0.98
5   5    pre  1.55
6   6    pre -0.05
7   7    pre  0.10
8   8    pre -1.35
9   9    pre  1.24
10 10    pre -0.28
11  1   post  1.31
12  2   post  2.39
13  3   post  2.87
14  4   post  2.25
15  5   post  2.33
16  6   post  5.32
17  7   post  3.13
18  8   post  1.21
19  9   post  1.50
20 10   post  0.97

縦データの主な利点

複数の変数の関連性の分析: 異なる種類の変数(例えば、介入の有無、測定されたアウトカムなど)を時間軸に沿って同時に分析することが可能です。
経時データの処理: 同一被験者に関するデータを時間軸に沿って追跡することが容易です。これにより、時間経過に伴う変化やトレンドを効果的に分析できます。
欠損データの扱い:時系列データにおける欠損値を扱う際に、縦データ形式ではその被験者の他の時間点の情報を利用して、欠損値の補完や推定が行いやすくなります(混合効果モデルを使用した場合)。

経時データの処理(関連のあるデータ)の例

R
ggplot(tate_2, aes(x = period, y = data, group = ID)) +
  geom_line(aes(color = factor(ID))) +  # Change color for each ID
  geom_point(aes(color = factor(ID))) +  # Change color for each ID similarly
  theme_minimal() +
  labs(title = "Comparison of Pre and Post Data for All IDs", x = "Period", y = "Data Value", color = "ID")

コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください

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