更新: 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