忍者ブログ
×

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