×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
reshape関数とstack関数を使うやり方がある
reshape関数はもともと入っている変数名を使える
stack関数は並べ替えるだけ
reshape関数
これはもともとaov用
spfp.q1 <- data.frame(
a = factor(c(rep(1,20), rep(2,20))),
b = factor(rep(c(rep(1,5), rep(2,5), rep(3,5), rep(4,5)),2)),
s = factor(c(rep(1:5, 4), rep(6:10, 4))),
result = c(3,3,1,3,5, 4,3,4,5,7, 6,6,6,4,8, 5,7,8,7,9,
3,5,2,4,6, 2,6,3,6,4, 3,2,3,6,5, 2,3,3,4,6))
comment(spfp.q1) <- "2way, mixed (1within, 1between), balanced"
## データ解析テクニカルブックより、松井先生のコード。感謝
# 横長にする
spfp.q1.2 <- reshape(spfp.q1, idvar = c("a","s"), timevar = "b", direction = "wide")
colnames(spfp.q1.2) <- c("a", "s", "b1", "b2", "b3", "b4")
# reshape関数で元の縦長にする
spfp.q1.3 <- reshape(spfp.q1.2, varying = list(3:6), idvar = "s", timevar = "b", direction = "long")
## varyingで縦に並べる変数 (反復測定変数) を指定する。idvarで被験者要因。timevar は反復測定変数の水準名の変数
spfp.q1.3 # "b"と"s"が入れ替わっているが気にしない
stack関数
stack関数を使うと反復測定要因を縦に並べたデータフレームを簡単に作れる
personality-projectの説明がわかりやすい
recall.data <- read.table("http://personality-project.org/r/datasets/recall1.data",header=TRUE)
sums <- recall.data[,9:12] #縦に並べる列をとりだす。
sums # データチェック
stackeds <- stack(sums) #stack関数で並べかえる
stackeds #データチェック
後は変数名を入れてるだけ
numcases <- 27 #被験者数
numvariables <- 4 #反復要因の水準数
## 後は変数、水準名を整理しているだけ
recall.df=data.frame(recall=stackeds,
subj=factor(rep(paste("subj", 1:numcases, sep=""), numvariables)),
time=factor(rep(rep(c("short", "long"), c(numcases, numcases)), 2)),
study=factor(rep(c("d45", "d90"), c(numcases*2, numcases*2))))
reshape関数はもともと入っている変数名を使える
stack関数は並べ替えるだけ
reshape関数
これはもともとaov用
spfp.q1 <- data.frame(
a = factor(c(rep(1,20), rep(2,20))),
b = factor(rep(c(rep(1,5), rep(2,5), rep(3,5), rep(4,5)),2)),
s = factor(c(rep(1:5, 4), rep(6:10, 4))),
result = c(3,3,1,3,5, 4,3,4,5,7, 6,6,6,4,8, 5,7,8,7,9,
3,5,2,4,6, 2,6,3,6,4, 3,2,3,6,5, 2,3,3,4,6))
comment(spfp.q1) <- "2way, mixed (1within, 1between), balanced"
## データ解析テクニカルブックより、松井先生のコード。感謝
# 横長にする
spfp.q1.2 <- reshape(spfp.q1, idvar = c("a","s"), timevar = "b", direction = "wide")
colnames(spfp.q1.2) <- c("a", "s", "b1", "b2", "b3", "b4")
# reshape関数で元の縦長にする
spfp.q1.3 <- reshape(spfp.q1.2, varying = list(3:6), idvar = "s", timevar = "b", direction = "long")
## varyingで縦に並べる変数 (反復測定変数) を指定する。idvarで被験者要因。timevar は反復測定変数の水準名の変数
spfp.q1.3 # "b"と"s"が入れ替わっているが気にしない
stack関数
stack関数を使うと反復測定要因を縦に並べたデータフレームを簡単に作れる
personality-projectの説明がわかりやすい
recall.data <- read.table("http://personality-project.org/r/datasets/recall1.data",header=TRUE)
sums <- recall.data[,9:12] #縦に並べる列をとりだす。
sums # データチェック
stackeds <- stack(sums) #stack関数で並べかえる
stackeds #データチェック
後は変数名を入れてるだけ
numcases <- 27 #被験者数
numvariables <- 4 #反復要因の水準数
## 後は変数、水準名を整理しているだけ
recall.df=data.frame(recall=stackeds,
subj=factor(rep(paste("subj", 1:numcases, sep=""), numvariables)),
time=factor(rep(rep(c("short", "long"), c(numcases, numcases)), 2)),
study=factor(rep(c("d45", "d90"), c(numcases*2, numcases*2))))
PR
Comment
Trackback
Trackback URL
Comment form