更新: 2018-01-16 12:26:08
生態学のデータ解析 - R-primer/data.frame 実習 1
(まだ準備中です)
- 実習でつかうデータファイル (CSV): data.csv
- R-primer/R 小雑わざ, R-primer/plot 実習 1 も参照
もくじ
データを読みこんで data.frame を作り,それを表示する
> d <- read.csv("data.csv") > d treatment size seed 1 control 21.3 9 2 trtX 24.2 19 3 control 12.0 1 4 trtX 16.1 4 5 control 21.8 13 6 trtX 20.2 6 7 control 22.7 8 8 trtX 23.8 8 9 control 19.5 7 10 trtX 26.4 22 11 control 20.1 3 12 trtX 27.3 31 13 control 22.5 14 14 trtX 21.8 19 15 control 18.6 4 16 trtX 25.3 26 17 control 23.5 11 18 trtX 19.7 6 19 control 27.9 22 20 trtX 22.0 17 > head(d) # 最初の 6 行が表示される treatment size seed 1 control 21.3 9 2 trtX 24.2 19 3 control 12.0 1 4 trtX 16.1 4 5 control 21.8 13 6 trtX 20.2 6 > head(d, 3) # 最初の 10 行が表示される treatment size seed 1 control 21.3 9 2 trtX 24.2 19 3 control 12.0 1 > tail(d, 3) # 最後の 3 行が表示される treatment size seed 18 trtX 19.7 6 19 control 27.9 22 20 trtX 22.0 17 > edit(d) # d を編集する
data.frame から行と列をとりだす
> d[1:3,] # 1 行めから 3 行めをとりだす treatment size seed 1 control 21.3 9 2 trtX 24.2 19 3 control 12.0 1 > d[c(1, 3, 5),] # 1, 3, 5 行めをとりだす treatment size seed 1 control 21.3 9 3 control 12.0 1 5 control 21.8 13 > d[, 1] # 1 列めをとりだす [1] control trtX control trtX control trtX control trtX control trtX [11] control trtX control trtX control trtX control trtX control trtX Levels: control trtX > d[4:6, 2:3] # 4-6 行めの 2-3 列めをとりだす size seed 4 16.1 4 5 21.8 13 6 20.2 6 # 列の選びかたに 3 とおりある (どれも重要) > d[, 3] # 3 列めをとりだす [1] 9 19 1 4 13 6 8 8 7 22 3 31 14 19 4 26 11 6 22 17 > d$seed # 上とおなじことをやっている [1] 9 19 1 4 13 6 8 8 7 22 3 31 14 19 4 26 11 6 22 17 > d[, "seed"] # これも同じ [1] 9 19 1 4 13 6 8 8 7 22 3 31 14 19 4 26 11 6 22 17
data.frame から条件つきデータとりだし
> d[d$treatment == "trtX",] # treatment が trtX のデータ treatment size seed 2 trtX 24.2 19 4 trtX 16.1 4 6 trtX 20.2 6 8 trtX 23.8 8 10 trtX 26.4 22 12 trtX 27.3 31 14 trtX 21.8 19 16 trtX 25.3 26 18 trtX 19.7 6 20 trtX 22.0 17 > d[d$size > 25.0,] # size が 25.0 より大きいのデータ treatment size seed 10 trtX 26.4 22 12 trtX 27.3 31 16 trtX 25.3 26 19 control 27.9 22 > d[d$seed <= 6,] # seed が 6 以下であるデータ 3 control 12.0 1 4 trtX 16.1 4 11 control 20.1 3 15 control 18.6 4 ... > d[d$seed <= 6 & d$seed > 2,] # seed が 6 以下,かつ 2 より大 ... > d[d$seed > 6 | d$seed <= 2,] # seed が 6 より大,または 2 以下 ...
data.frame 内の並べかえ
> d <- d[order(d$size),] # d$size の小さい順に並べかえる > d <- d[rev(order(d$size)),] # d$size の大きい順に並べかえる