ホーム >> | UNIX >> | R >> | データフレームの操作 |
データフレームを表示するには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個の要素を取り出すにはhead関数,最後からN個の要素を取り出すにはtail関数を使う。
最初のN行のデータを取り出すには,データフレームをdataとして,
head(data,N)
最後からi行のデータを取り出すには、
tail(data,N)とする。
要素を一つずつ順番に取り出して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