縦のデータ (long data)、横のデータ (wide data)

データの準備と要約

使用するパッケージ(パッケージのインストール

library(tidyr)
library(ggplot2)

データセットの作成

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)
group <- c(
    rep("A", length(dat1)),
    rep("B", length(dat2))
)

df <- data.frame(group, data)
#View(df)

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

群が独立している場合の差の検定、分散分散分析などで使用されます

t検定の場合(独立2群の差の検定)

t.test(data ~ group, data=df)

もしこのデータが対応のあるデータだったら

便宜上、対応していることを示すためにIDを振ります

df$id <- c(rep(c(1:10), 2))
#View(df)

更に、A、Bを前後に書き換えます

df$point <- c(rep("前", 10), rep("後", 10))
df2 <- df[, -1]
#View(df2)
ggplot(df2, aes(x = point, y = data, group = id)) +
  geom_line(aes(color = factor(id))) +  # 各idごとに色を変える
  geom_point(aes(color = factor(id))) +  # 同じく各idごとに色を変える
  theme_minimal() +
  labs(title = "全IDの前後のデータ比較", x = "時期", y = "データ値", color = "ID")

横データに変換

df2yoko <- tidyr::spread(df2, key=point, value=data)
#View(df2yoko)

列が後前になっているので前後に場所移動

df3 <- df2yoko[,c(1, 3, 2)]
#View(df3)

ここ”横データ”から対応あるt検定(1標本t検定)

t.test(df3$後 - df3$前)

縦データに変換したい場合

tidyr::gather(df3, key=point, value=data, -id)

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

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