理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> R >> データフレームの操作
このエントリーをはてなブックマークに追加

R:データフレームの操作

更新日:2015.1.15
作成日:2014.3.28
環境:R 3.0.3
  1. データフレームの内容を表示するには
  2. データフレームから任意の列を取り出すには
  3. データフレームの列を入れ替えるには
  4. データフレームの特定の列に値を加えるには
  5. データフレームの要素(行)を取り出すには
  6. データフレームの先頭または最後からN個の要素を取り出すには
  7. データフレームの要素を一つずつ取り出してforループをまわすには

データフレームの内容を表示するには

データフレームを表示するにはprint()cat()を使う必要は無く,単に変数を実行すればよい。

データフレームから任意の列を取り出すには

次のようなデータフレームdataを準備する。

data <- data.frame(name=c("Sato","Tanaka","Yoshida","Yamada","Kida"),
                   age=c(34,52,27,31,19), sex=c("M","M","F","F","M"),
                   branch=c("Tokyo","Osaka","Yokohama","Oita","Iwate"),
                   license=c(TRUE,FALSE,TRUE,TRUE,FALSE))
     name age sex   branch license
1    Sato  34   M    Tokyo    TRUE
2  Tanaka  52   M    Osaka   FALSE
3 Yoshida  27   F Yokohama    TRUE
4  Yamada  31   F     Oita    TRUE
5    Kida  19   M    Iwate   FALSE

データフレームdataから3列目と5列目を取り出して,新しいデータフレームderived_dataを作成する。

derived_data <- data[,c(3,5)]
     name sex
1    Sato   M
2  Tanaka   M
3 Yoshida   F
4  Yamada   F
5    Kida   M

データフレームの列を入れ替えるには

データフレームdataの3列目と5列目を入れ替える。

derived_data <- data[,c(1,2,5,4,3)]
     name age license   branch sex
1    Sato  34    TRUE    Tokyo   M
2  Tanaka  52   FALSE    Osaka   M
3 Yoshida  27    TRUE Yokohama   F
4  Yamada  31    TRUE     Oita   F
5    Kida  19   FALSE    Iwate   M

データフレームの特定の列に値を加えるには

データフレームdataの2列目に1を加える。

data[,2] <- data[,2] + 1
     name age sex   branch license
1    Sato  35   M    Tokyo    TRUE
2  Tanaka  53   M    Osaka   FALSE
3 Yoshida  28   F Yokohama    TRUE
4  Yamada  32   F     Oita    TRUE
5    Kida  20   M    Iwate   FALSE
この場合,元データのdata自身を変更している。 元データを変更したくなければ,一旦データフレーム全体をコピーした後で修正を加える。

データフレームの各列に名前が付いている場合には,名前で指定することもできる。

data$name <- data$name + 1
同上
同様に,各列に値を掛けたり,割ったりすることもできる。

データフレームの要素(行)を取り出すには

データフレームの2番目の要素を取り出す。

data[2,]
    name age sex branch license
2 Tanaka  53   M  Osaka   FALSE
行番号の後のコンマは重要。コンマが無いと列番号を指定したと見なされる。

データフレームの先頭または最後からN個の要素を取り出すには

先頭からN個の要素を取り出すにはhead関数,最後からN個の要素を取り出すにはtail関数を使う。

最初のN行のデータを取り出すには,データフレームをdataとして,

head(data,N)

最後からi行のデータを取り出すには、

tail(data,N)
とする。

データフレームの要素を一つずつ取り出してforループをまわすには

要素を一つずつ順番に取り出してforループをまわすには,次のようにやるとよい。

for(i in seq(along=data)){
  element=data[i,]
  print(element)
}
  name age sex branch license
1 Sato  35   M  Tokyo    TRUE
    name age sex branch license
2 Tanaka  53   M  Osaka   FALSE
     name age sex   branch license
3 Yoshida  28   F Yokohama    TRUE
    name age sex branch license
4 Yamada  32   F   Oita    TRUE
  name age sex branch license
5 Kida  20   M  Iwate   FALSE