Rで扱うデータ構造は、大きく分けてベクトル、行列、配列、リスト、データフレームの5種類がある。配列については利用場面がほとんどないため説明を省略する。

データ構造を確認する

class(iris)
## [1] "data.frame"

ベクトル

同じデータ型の1次元の連なり。

x <- c(1, 2, 3, 5, 7)
x
## [1] 1 2 3 5 7

ベクトルの長さを調べる

x <- c(1, 2, 3, 5, 7)
length(x)
## [1] 5

行列

同じデータ型の2次元の連なり。

x <- matrix(1:9, nrow = 3, ncol = 3)
x
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

nrow で行数、ncol で列数を指定する。 デフォルトでは列を優先してベクトルを折りたたむが、引数にbyrow = TRUEを指定すると行を優先する。

x <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE)
x
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9

行数を調べる

x <- matrix(1:9, nrow = 3, ncol = 3)
nrow(x)
## [1] 3

列数を調べる

x <- matrix(1:9, nrow = 3, ncol = 3)
ncol(x)
## [1] 3

データフレーム

表形式の構造。行列では同じデータ型しか扱えないのに対して、データフレームでは列ごとのデータ型が同じであれば良い。1行が1サンプルで列に属性を表現する。

x <- data.frame(
  label = c("A", "B", "C"),
  weight = c(10, 12, 14)
)
class(x)
## [1] "data.frame"
x
##   label weight
## 1     A     10
## 2     B     12
## 3     C     14

リスト

異なる型のデータの1次元の連なり。複雑なデータ(要素数が異なるなど)構造を扱う際に利用される。例えば、分析結果など。

x <- list("A", 12, 0.2)
class(x)
## [1] "list"
x
## [[1]]
## [1] "A"
##
## [[2]]
## [1] 12
##
## [[3]]
## [1] 0.2
x <- lm(dist ~., data = cars)  # 回帰分析
mode(x)  # 分析結果など複雑なデータ構造はリスト型で返される
## [1] "list"
x
##
## Call:
## lm(formula = dist ~ ., data = cars)
##
## Coefficients:
## (Intercept)        speed
##     -17.579        3.932

データ構造の変換

as.vector(x)     # xをベクトルに変換する
as.matrix(x)     # xを行列に変換する
as.data.frame(x) # xをデータフレームに変換する
as.list(x)       # xをリストに変換する
unlist(x)        # リスト型のxをベクトル型に変換する

「データから価値を創造する」一般社団法人データマーケティングラボラトリー

Copyright© DML All Rights Reserved.