×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
# データの並べ替え
## ベクトルの処理
x <- c(1,3,5,6,4,2)
rev(x) # 逆順に並べ替え
sort(x) # 小さい順に並べ替え
sort(x, decreasing=T) # 大きい順に並べ替え。sort(x, T) でも可
order(x) # 小さい順の添え字
x[order(x)] # sort(x) と同じ
## サンプルデータ
dat <- data.frame(v1=1:12, v2=rep(c(4,2,9), each=4), v3=rep((rep(c(2,1), each=2)), 3))
dat
# 変数v2で並べ替え
dat[order(dat$v2),]
# v2とv3で並べ替え
dat[order(dat$v2, dat$v3),]
# v2は降順、v3は昇順
dat[order(-dat$v2, dat$v3),]
## ソートの例2。データフレームの並べ替え処理
## サンプルデータ
a <- paste("a", sample(1:10,10), sep="")
b <- paste("b", sample(1:10,10), sep="")
dat <- data.frame(round(matrix(rnorm(100), nr=10),2))
colnames(dat) <- a
rownames(dat) <- b
dat
## 列名で並べ替える
dat[,order(colnames(dat))]
## 行名で並べ替える
dat[order(rownames(dat)),]
## 列1で並べ替える
dat[order(dat[,1]),] # カンマは後ろにつく。列の数値で行を並べ替えるので
## 行1で並べ替える
dat[,order(dat[1,])] # カンマは前につき、dat[1,]につく。行の数値で列を並べ替えるので
# データのマージ
## サンプルデータ
dat1 <- data.frame(id=paste("ps", 1:10, sep=""), v1=rnorm(10), v2=gl(2, 5, label=c("ga", "gb")), v3=sample(1:5, replace=T))
dat2 <- data.frame(id=paste("ps", 101:110, sep=""), v2=gl(2, 5, label=c("gb", "gc")), v3=sample(1:5, replace=T)) # id重複なし
dat3 <- data.frame(id=paste("ps", 1:6, sep=""), v5=rnorm(6)) # id重複
# 縦にくっつける
merge(dat1, dat2, all=T)
merge(dat1, dat3, all=T)
# 横にくっつける
cbind(dat1, dat2)
data.frame(dat1, dat2) # 自動で重複する変数名を変えてくれる
PR
Comment
Trackback
Trackback URL
Comment form