更新: 2018-01-16 12:26:08
生態学のデータ解析 - R-primer/R 基本データクラス
- R のとりかかり, R-primer/data.frame 実習 1
- R には多くのデータクラス (データの種類やデータ「格納」方法) があります
- ここでは (よく使う) データの種類をあらわすデータクラス 5 種類について簡単に説明します.
もくじ
データのクラスとは?
オブジェクトとクラス
- R ではデータを格納している単位のことをオブジェクトと呼びます
- 下の例では,
x
は 1, 2, 3, 4 といったデータを格納しているオブジェクトで,ユーザーによってx
という名前がつけられています
- 下の例では,
> x <- 1:4 > x [1] 1 2 3 4
関数 class()
- 関数 class() を使うとオブジェクトのクラス名がわかります
- データが vector である
x
に格納されているときに,class(x)
とするとx
の データの種類 を表示します- ここではそのデータの種類のうち numeric, integer, logical, character, factor について簡単に説明します
- この中でもっとも「めんどうかつ便利」な factor クラスの説明がここでのゴールです
> x <- 1:4 > x [1] 1 2 3 4 > class(x) [1] "integer" > x <- rnorm(5) > x [1] -0.065804 -0.649128 -0.502629 -1.390060 -0.653706 > class(x) [1] "numeric"
数値クラス: numeric
- 数値データは numeric クラスのオブジェクトになります
> x <- rnorm(5) > x [1] -0.065804 -0.649128 -0.502629 -1.390060 -0.653706 > class(x) [1] "numeric"
整数クラス: integer
- 数値データのうち整数は integer クラスのオブジェクトになります
> x <- 1:4 > x [1] 1 2 3 4 > class(x) [1] "integer"
論理クラス: logical
- R の中で
TRUE
とFALSE
は特別な意味をもつ値で,logical クラスになります-
TRUE
(またはT
) とFALSE
(またはF
) はそれぞれ命題の真と偽をあらわしています - help(logical)
-
- logical クラスのオブジェクトは
as.numeirc()
で integer クラスになります- 逆に integer クラスのオブジェクトは
as.logical()
で logical になります
- 逆に integer クラスのオブジェクトは
> x <- c(TRUE, FALSE) > x [1] TRUE FALSE > class(x) [1] "logical" > as.numeric(x) [1] 1 0 > as.logical(c(0, 1, 2, 3)) [1] FALSE TRUE TRUE TRUE
文字クラス: character
- 文字のあつまりで表現されるデータは character クラスになります
- help(character)
- character クラスのデータを表示させると double quotation マークに囲われた値が表示されます
> x <- c("abc", "xyz") > x [1] "abc" "xyz" > class(x) [1] "character"
因子クラス: factor
- factor はめんどうで便利なクラスです
- R を使うときには factor の理解が必要不可欠になります
factor はどこにあらわれるか
- R-primer/data.frame 実習 1 で示しているように,read.csv() で data.csv を読みこむと下のようになります
- このとき
treatment
列は文字データを読みこんでいるにもかかわらず,character
ではなくfactor
クラスの列とされます
- このとき
> 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 > class(d$treatment) [1] "factor"
factor の「みかけ」と実体
- 上の例で作った data.frame
d
のd$treatment
列は factor クラスです-
d$treatment
のみかけ: 文字クラスのようにみえる -
d$treatment
の実体: integer クラスである - つまり下に示しているように,ここでは 1 という値が
control
というみかけをもち,2 という値が"trtX
というみかけをもっています
-
> d$treatment [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$treatment[1] [1] control Levels: control trtX > as.character(d$treatment) [1] "control" "trtX" "control" "trtX" "control" "trtX" "control" "trtX" [9] "control" "trtX" "control" "trtX" "control" "trtX" "control" "trtX" [17] "control" "trtX" "control" "trtX" > as.numeric(d$treatment) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2