忍者ブログ
×

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