×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
# 行列、データフレームの先頭、末尾をとりだす
head(dat)
tail(dat)
# 特定の行、列を除いたり、逆に取り出したりする
dat[-2,] # 2行目を除く
dat[,-2] # 2列目を除く
dat[c(1,3,5),] # 1,3,5行を取り出す
dat[,c(1:10)] # 1列目から10列目までを取り出す
# 特定のデータを取り出す
x <- sample(1:5, 100, replace=T)
## 1だけ取り出す
x[x==1]
## 1がいくつかるか数えるには
x==1 # こうするとTRUE/FALSEが返される
sum(x==1) # T/Fは01データとしても扱われるのでsumで調べることができる
which(x==1) # ベクトル内の位置を返す
# subset関数を用いて抽出
## サンプルデータ
dat <- data.frame(id= paste("ps", 1:20, sep=""), sex=sample(c("m", "f"), 20, replace=T), age=sample(20:70, 20, replace=T))
## 男性だけ取り出す
subset(dat, sex=="m")
## 30以上70以下だけ取り出す
subset(dat, age>=30 & age<=70)
## 30以上70以下の男性だけ取り出す
subset(dat, sex=="m" & (age>=30 & age<=70))
## 30以上70以下の男性のidだけ取り出す。select引数を使う
subset(dat, sex=="m" & (age>=30 & age<=70), select=id)
## 因子変数と数値変数が混在しているデータフレームで、因子だけのと数値だけのデータフレームに分ける
# データの準備
f1 <- sample(letters[1:5], 20, replace=T)
f2 <- ordered(sample(letters[11:15], 20, replace=T))
f2["Levels"] # これは順序変数にしてみよう
n1 <- sample(500:1000, 20, replace=T)
n2 <- sample(rnorm(100), 20, replace=T)
f3 <- sample(letters[21:25], 20, replace=T)
dat <- data.frame(f1, f2, n1, n2, f3)
summary(dat)
sapply(dat, class)
# 因子変数はdatfへ、それ以外 (数値) はdatiへ
fcol <- grep("factor", sapply(dat, class))
datf <- dat[,c(fcol)]
dati <- dat[,-c(fcol)]
datf
dati
# 重複するデータを除く
## サンプルデータ
dat <- data.frame(
id=gl(5, 10, labels=c("s1", "s2", "s3", "s4", "s5")),
sex=rep(c("f", "f", "m", "m", "f"), each=10),
age=rep(c(18:22), each=10)
)
aggregate(dat[2:3], list(dat[,1]), function(x) x[1])
# きっともっといいやり方があるだろう
PR
Comment
Trackback
Trackback URL
Comment form