R言語 データフレーム - R Data Frame

 

参考:

  • データフレーム Tips 大全 1

和訳:

  • observation, observed value: 観測値
  • variable: 変数

ベクトル

a <- 1:10
b <- c("たま", "しろ", "くろ", "みけ", "ぶち", "ぽち", 
    "ころ", NA, "じろ", "わん")
c <- c("猫", "猫", "猫", "猫", "猫", "犬", "犬", "犬", 
    "犬", "犬")
d <- rep(c("♂", "♀"), times = 5)

データフレーム

dat <- data.frame(a, b)
dat <- data.frame(年齢 = a, 名前 = b)
dat <- data.frame(年齢 = a, 名前 = b, 種 = c, 性別 = d, 
    stringsAsFactors = FALSE)

変数の名前

names(dat)
## [1] "年齢" "名前" "種"   "性別"
names(dat)[2]
## [1] "名前"
names(dat)[2] <- "呼び名"

データのチェック

head(dat)
##   年齢 呼び名 種 性別
## 1    1   たま 猫    ♂
## 2    2   しろ 猫    ♀
## 3    3   くろ 猫    ♂
## 4    4   みけ 猫    ♀
## 5    5   ぶち 猫    ♂
## 6    6   ぽち 犬    ♀
head(dat, n = 3)  #n:行数
##   年齢 呼び名 種 性別
## 1    1   たま 猫    ♂
## 2    2   しろ 猫    ♀
## 3    3   くろ 猫    ♂
tail(dat)
##    年齢 呼び名 種 性別
## 5     5   ぶち 猫    ♂
## 6     6   ぽち 犬    ♀
## 7     7   ころ 犬    ♂
## 8     8   <NA> 犬    ♀
## 9     9   じろ 犬    ♂
## 10   10   わん 犬    ♀
tail(dat, n = 3)
##    年齢 呼び名 種 性別
## 8     8   <NA> 犬    ♀
## 9     9   じろ 犬    ♂
## 10   10   わん 犬    ♀

データのタイプをチェック

class(dat)
## [1] "data.frame"
str(dat)
## 'data.frame':    10 obs. of  4 variables:
##  $ 年齢  : int  1 2 3 4 5 6 7 8 9 10
##  $ 呼び名: chr  "たま" "しろ" "くろ" "みけ" ...
##  $ 種    : chr  "猫" "猫" "猫" "猫" ...
##  $ 性別  : chr  "♂" "♀" "♂" "♀" ...

個別のベクトルへアクセス

dat$年齢
##  [1]  1  2  3  4  5  6  7  8  9 10
class(dat$呼び名)
## [1] "character"
class(dat$年齢)
## [1] "integer"

データフレーム内の要素へアクセス

dat[2, 3]
## [1] "猫"
dat[3, ]
##   年齢 呼び名 種 性別
## 3    3   くろ 猫    ♂
dat[, 3]
##  [1] "猫" "猫" "猫" "猫" "猫" "犬" "犬" "犬" "犬" "犬"
dat[2:3, ]
##   年齢 呼び名 種 性別
## 2    2   しろ 猫    ♀
## 3    3   くろ 猫    ♂
dat[1, 2:3]
##   呼び名 種
## 1   たま 猫
dat[c(2, 4), ]
##   年齢 呼び名 種 性別
## 2    2   しろ 猫    ♀
## 4    4   みけ 猫    ♀
dat[, "呼び名"]
##  [1] "たま" "しろ" "くろ" "みけ" "ぶち" "ぽち" "ころ" NA     "じろ" "わん"
dat[, c("呼び名", "年齢")]
##    呼び名 年齢
## 1    たま    1
## 2    しろ    2
## 3    くろ    3
## 4    みけ    4
## 5    ぶち    5
## 6    ぽち    6
## 7    ころ    7
## 8    <NA>    8
## 9    じろ    9
## 10   わん   10
dat[2, 2] <- "こじろう"  #値を上書き
dat[is.na(dat$呼び名), ]  #欠損値を含む行
##   年齢 呼び名 種 性別
## 8    8   <NA> 犬    ♀
dat[dat$年齢 < 5, ]  #年齢が5歳以下のサンプル
##   年齢   呼び名 種 性別
## 1    1     たま 猫    ♂
## 2    2 こじろう 猫    ♀
## 3    3     くろ 猫    ♂
## 4    4     みけ 猫    ♀
dat[dat$呼び名 %in% c("ころ", "じろ"), c(2, 4)]
##   呼び名 性別
## 7   ころ    ♂
## 9   じろ    ♂

個別のベクトルを抽出

dat2 <- dat$呼び名
class(dat2)
## [1] "character"

データフレーム内にある個別のベクトルをデータフレームとして抽出

dat2 <- dat[, "呼び名", drop = FALSE]
class(dat2)
## [1] "data.frame"