忍者ブログ
×

[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))))
PR
Comment
Trackback
Trackback URL

Comment form
Title
Color & Icon Vodafone絵文字 i-mode絵文字 Ezweb絵文字  
Comment
Name
Mail
URL
Password
プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表