行列と同じく 2 次元配置のデータ構造を持つ
データフレーム
データフレームは行列と同じく 2 次元配置である。行列型のデータはすべて同じ属性でなければならない。例えば、行列全体がすべて数値、あるいはすべて文字列などである必要がある。これに対して、データフレーム型のデータはそのような制限がない。1 列目が数値、2 列目が文字列、3 列目は複素数などのように複数の属性束ねることができる。
mt <- cbind(
c("A", "B", "C", "D"),
c(1, 2, 3, 4),
c(T, T, F, T)
)
mt
## [,1] [,2] [,3]
## [1,] "A" "1" "TRUE"
## [2,] "B" "2" "TRUE"
## [3,] "C" "3" "FALSE"
## [4,] "D" "4" "TRUE"
df <- data.frame(
Letter = c("A", "B", "C", "D"),
Numeric = c(1, 2, 3, 4),
Logic = c(T, T, F, T)
)
df
## Letter Numeric Logic
## 1 A 1 TRUE
## 2 B 2 TRUE
## 3 C 3 FALSE
## 4 D 4 TRUE
データフレームの作成
データフレームの作成は data.frame
関数を使う。データフレームを作成する際に、各列に名前を付けることができる。
df <- data.frame(
A = c(1, 2, 3, 4),
B = c(T, T, F, T)
)
df
## A B
## 1 1 TRUE
## 2 2 TRUE
## 3 3 FALSE
## 4 4 TRUE
df[, 1]
## [1] 1 2 3 4
df$A
## [1] 1 2 3 4
subset
や na.omit
などを利用することで、条件を指定して、データフレームの一部だけを取得するようなことができる。
df <- data.frame(
A = c(1, 2, 3, 4),
B = c(T, F, T, T),
C = c(1, 2, NA, 4)
)
na.omit(df)
## A B C
## 1 1 TRUE 1
## 2 2 FALSE 2
## 4 4 TRUE 4
subset(df, colB == T)
## A B C
## 1 1 TRUE 1
## 3 3 TRUE NA
## 4 4 TRUE 4
データフレームの並べ替え
データフレームを並べる場合は order
を利用つかう。
df <- data.frame(
A = c(11, 53, 13, 11, 24, 50),
B = c(33, 22, 86, 34, 66, 34),
C = c(50, 42, 42, 19, 43, 91)
)
df[order(df$A), ]
## A B C
## 1 11 33 50
## 4 11 34 19
## 3 13 86 42
## 5 24 66 43
## 6 50 34 91
## 2 53 22 42
df[order(df$A, decreasing = TRUE), ]
## A B C
## 2 53 22 42
## 6 50 34 91
## 5 24 66 43
## 3 13 86 42
## 1 11 33 50
## 4 11 34 19
df[order(df$A, df$B), ]
## A B C
## 1 11 33 50
## 4 11 34 19
## 3 13 86 42
## 5 24 66 43
## 6 50 34 91
## 2 53 22 42