使用するパッケージ
library(tidyr)
サンプルデータセットの作成
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))

このサイトではこのタイプを“縦のデータ“と定義します
群が独立している場合の差の検定、分散分散分析などで使用されます
t検定の場合(独立2群の差の検定)
t.test(data ~ group, data=df)

もしこのデータが対応のあるデータだったら
便宜上、対応していることを示すためにIDを振ります
df$id <- c(rep(c(1:10), 2))
df

更に、A、Bを前後に書き換えます
df$point <- c(rep("前", 10), rep("後", 10))
(df2 <- df[, -1])

横データに変換
(df2yoko <- tidyr::spread(df2, key=point, value=data))

列が後前になっているので前後に場所移動
(df3 <- df2yoko[,c(1, 3, 2)])

ここ”横データ”から対応あるt検定(1標本t検定)
t.test(df3$後 - df3$前)

対応のあるグラフ
x <- c(1.1, 1.9) #見栄えをよくするためにちょっとずらす
(dat <- t(df3[,2:3]))
matplot(
x, dat,
type ="l", lty=1, col=1,
xaxt="n",
xlim=c(1, 2),
xlab="", ylab=""
)
name <- c("前", "後")
axis(side=1, at=c(1.1, 1.9), labels=name)

縦データに変換したい場合
tidyr::gather(df3, key=point, value=data, -id)

コメント