新しい変数をつくる
付置演算子 <- で新しい変数を生成できる。演算子 と 組み込み関数 も参照。
# 以下3例は全て同じ結果を返す。
 
				
				mydata$sum <- mydata$x1 + mydata$x2
					mydata$mean <- (mydata$x1 + mydata$x2)/2
					
					attach(mydata)
					mydata$sum <- x1 + x2
					mydata$mean <- (x1 + x2)/2
					detach(mydata)
					
					mydata <- transform( mydata,
					sum = x1 + x2,
mean = (x1 + x2)/2 
					)
				
変数の再コード化
連続変数を因子変数にする。中央値分割して高群と低群に分けるとか。演算子 (">=", "<") を使うやり方とcut関数を使うやり方がある。覚えてしまえばcut関数が楽。
制御構文も参照。
cut関数の使い方の覚書
					
					 # 参考:連続変数をカテゴリー変数に変換する
					# データ生成
					x <- c(10,20,30,40,50, trunc(rnorm(45, m=30, sd=5)))
					
					# 範囲を指定して分割する
					 # 10刻みで分割しよう
					## 刻み幅、最大値、最小値を指定しておく
					sqv <- 10
					minv <- 10
					maxv <- 50
					
					# 分割
					seqs <- seq(minv, maxv, sqv)
					brks <- c(-Inf, seqs, Inf)
					gs <- paste(c("-", seqs), c(seqs, "-"), sep="-")
					## カテゴリー生成
					cats <- cut(x, breaks=brks, right=FALSE, include.lowest=TRUE, labels=gs) # ~以上~未満 (right=FALSE), 最大値を含める (include.lowest=T))) 
					
					# 確認
					data.frame(x, cats)
					barplot(table(cats))
					
					# 中央値で分割する。中央値も〜未満、以上〜にする
					 # 中央値を確認
					median(x)
					gs <- c("low", "high")
					# カテゴリー生成
					cats <- cut(x, breaks=c(-Inf, median(x), Inf), right=FALSE, include.lowest=TRUE, labels=gs)
					# 確認
					data.frame(x, cats)
					barplot(table(cats))
					
					# 中央値と四分位数で4分割する
					seqs <- quantile(x)[2:4] # quantile関数で四分位数と中央値を取り出す
					brks <- c(-Inf, seqs, Inf)
					gs <- paste(c("-", seqs), c(seqs, "-"), sep="-")
					# カテゴリー生成
					cats <- cut(x, breaks=brks, right=FALSE, include.lowest=TRUE, labels=gs)
					# 確認
					data.frame(x, cats)
					barplot(table(cats))
					
					
					# 平均値とsdで6分割する
					sdv <- sd(x)
					mv <- mean(x)
					seqs <- c(mv-2*sdv, mv-sdv, mv, mv+sdv, mv+2*sdv)
					seqs2 <- c("m2sd", "m1sd", "avg", "p1sd", "p2sd")
					brks <- c(-Inf, seqs, Inf)
					gs <- paste(c("-", seqs2), c(seqs2, "-"), sep="-")
					# カテゴリー生成
					cats <- cut(x, breaks=brks, right=FALSE, include.lowest=TRUE, labels=gs)
					# 確認
					data.frame(x, cats)
					barplot(table(cats))
					
					# とにかく10分割
					brks <- 10
					gs <- letters[1:brks] # 適当にグループ名
					cats <- cut(x, breaks=brks, right=FALSE, include.lowest=TRUE)
					# 確認
					data.frame(x, cats, gs)
					barplot(table(cats))
					
					
					
				
# 70より上か下かで年齢のカテゴリーを2つつくる。	
					age <- sample(20:100, 20, replace=T) # 仮想データ生成
					agecat <- ifelse(age > 70, c("older"), c("younger")) 
					age; agecat
				
				# 別の例。カテゴリー3つ
				agecat[age > 75] <- "Elder"
				agecat[age > 45 & age <= 75] <- "Middle Aged"
				agecat[age <= 45] <- "Young"
				age; agecat
				
例2
					# サンプルデータ
					x <- trunc(rnorm(30, m=100, sd=10))
					
					# 90未満、90以上110未満、110以上でlow, middle, highにする
					# cut関数よりも楽で以上、未満、以下が定義しやすい
					nx <- x
					nx[x >= 110] <- "high"
					nx[x >= 90 & x < 110] <- "middle"
					nx[x < 90] <- "low"
					x
					nx <- factor(nx) # 順序尺度にするときはordered(nx, levels=c("high", "middle", "low"))
					# cut関数でコード化
					x <- trunc(rnorm(30, m=100, sd=10))
					## 中央値分割
					cut(x, breaks=c(-Inf, median(x), Inf), label=c("LOW", "HIGH"), right=T, ordered_result=T)
					## ordered_result=Tとすると順序尺度になる。分割は以上-未満で行われる。right=Tとしないとへんな結果になる
					
変数の名前を変える
				# fix関数でデータエディタを開き、インタラクティブに変える。
				fix(mydata)
				
				
				# reshapeパッケージのrename関数で変える。
				x <- iris
				names(x)
				library(reshape)
				x2 <- rename(x, c(Sepal.Length="newname"))
				names(x2)
				
				
				# 自分でnames属性を入力する。そのたびに全部の名前を入力しないといけないので面倒。
				names(x2)
				names(x2) <- c("newnm", "x1","age","y", "ses")
				names(x2)
		
ダミー変数の生成
			x <- gl(5, 4, labels=c("high", "mid", "low", "out", "ukn"))
			lvs <- levels(x)
			nlv <- nlevels(x)
			x.dmy <- data.frame(matrix(0, nrow=20, ncol=5))
			for (i in 1:nlv) {
			x.dmy[,i] <- as.integer(x==lvs[i])
			}
			data.frame(x.dmy, x)
			
			## 青木先生のmake.dummy関数 ## 
			# データはデータフレームで渡す。データが1列しかないデータフレームには対応していない。
			source("http://aoki2.si.gunma-u.ac.jp/R/src/make.dummy.R", encoding="euc-jp")
			x <- gl(5, 4, labels=c("high", "mid", "low", "out", "ukn"))
			
			# 1列だとうまくいかない
			x1 <- data.frame(x)
			make.dummy(x1)
			# 2列だとダミー変数を生成できる。
			x2 <- data.frame(x,x)
			make.dummy(x2)