データフレームでは条件付きでレコードを取得できる。
以下のようなフォーマットのデータフレームを考える
- id
- name
- height
vector1 <- c(1, 2, 3, 4, 5)
vector2 <- c("yamada", "tanaka", "watanabe", "takahashi", "shimizu")
vector3 <- c(165, 180, 170, 168, 175)
heightdf = data.frame(id=vector1, name=vector2, height=vector3)
heightdfからレコード番号を指定してレコードを取得する。
> heightdf[2,] id name height 2 2 tanaka 180 > heightdfid name height 2 2 tanaka 180 3 3 watanabe 170 4 4 takahashi 168 > heightdfid name height 1 1 yamada 165 3 3 watanabe 170 4 4 takahashi 168 5 5 shimizu 175 > c(2-4) [1] -2
heightdfから条件付でレコードを取得してみる。
> heightdf[vector1==2,] id name height 2 2 tanaka 180 > vector1==2 [1] FALSE TRUE FALSE FALSE FALSE
大事なことはboolean値はデータを抽出するデータフレームとはなんら関係ない。booleanのベクタを戻せばよいこと。
> vector4=c(TRUE, TRUE, FALSE, TRUE, FALSE, TRUE) > heightdf[vector4,] id name height1 1 yamada 1652 2 tanaka 1804 4 takahashi 168 NA NA <NA> NA