忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

rvlup <- function(x, i, lbl) { # xはラベルとかをくっつけたいベクトル、iはインデックス、lblはラベル。
  if(length(i)!=length(lbl))
      stop("インデックスとラベルの長さが違います")
  lbl2 <- lbl
  names(lbl2) <- i
  res <- lbl2[x]
  names(res) <- NULL
  return(res)
}
## 覚書: 条件の変数名をインデックスにする。その上で条件の添え字を元のベクトルで指定する。元のベクトルは当然文字列でないといけない

## stackした後のデータを想定。
tr <- sample(paste("trial", 1:10, sep=""), 20, replace=T)

## それぞれの試行はどんな条件かのインデックス
## サンプルデータ
x1 <- paste("trial", 1:10, sep="")
x2  <- sample(c("high", "low"), 10, replace=T)
## インデックスデータ
(indx <- data.frame(indx=x1, cnd=x2))

## インデックス、条件をそれぞれベクトルにする
indv <- indx[,1]
cndv <- indx[,2]

## 関数rvlupを使う
res <- rvlup(tr, indv, cndv)
res

## 確認
data.frame(tr, res)
indx

## やっぱこっちのほうがわかりやすいかも
trcn <- vector()
for (i in 1:length(tr)) {
x <- tr[i]
xi <- which(indv==x)
res <- as.character(cndv[xi])
trcn[i] <- res
}
data.frame(tr, res)

## match関数を使えばもっと簡単だった...orz
tr
indv
cndv
xi <- match(tr, indv) # trでindvに一致するベクトルの添え字を返す。たとえばtr内の"trial9"はindvの何番目にあるか。これをxiに格納する
cndv[xi] # 条件名ベクトルからxiの添え字に入っているものをとりだす
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
セリーグ順位表
パリーグ順位表