データフレームからの抽出 2
準備
下のデータをコピーして、Rでフレームにします
実験A 10 6 10 9 10 実験B 10 5 5 12 4 実験C 5 4 11 4 6 実験D 9 5 2 3 1
コピーして、データフレームに取り込み
(x <- read.table("clipboard",row.names = 1)) V2 V3 V4 V5 V6 実験A 10 6 10 9 10 実験B 10 5 5 12 4 実験C 5 4 11 4 6 実験D 9 5 2 3 1
列名を記載
cn <- LETTERS[1:5] colnames(x) <- cn x A B C D E 実験A 10 6 10 9 10 実験B 10 5 5 12 4 実験C 5 4 11 4 6 実験D 9 5 2 3 1
データフレームをベクトルに
準備したフレームxから2列目のみを取り出してみます
#列の取り出しは簡単です x[,2] [1] 6 5 4 5
準備したフレームxから2行目のみを取り出してベクトルにします
#2行目 x[2,] A B C D E 実験B 10 5 5 12 4 #2行目をベクトルに変換 (xv <- as.integer(x[2,])) [1] 10 5 5 12 4
マトリックスにしてベクトルとして一括抽出
(xm <- as.matrix(x)) A B C D E 実験A 10 6 10 9 10 実験B 10 5 5 12 4 実験C 5 4 11 4 6 実験D 9 5 2 3 1 (as.vector(xm)) [1] 10 10 5 9 6 5 4 5 10 5 11 2 9 12 4 3 10 4 6 1
因子ベクトル(カテゴリカルデータ)
実験A 10 6 10 9 10 a 実験B 10 5 5 12 4 a 実験C 5 4 11 4 6 b 実験D 9 5 2 3 1 b
コピーしてRのフレームに取り込みます
(xc <- read.table("clipboard",row.names = 1)) V2 V3 V4 V5 V6 V7 実験A 10 6 10 9 10 a 実験B 10 5 5 12 4 a 実験C 5 4 11 4 6 b 実験D 9 5 2 3 1 b cn2 <- LETTERS[1:6] colnames(xc) <- cn2 xc A B C D E F 実験A 10 6 10 9 10 a 実験B 10 5 5 12 4 a 実験C 5 4 11 4 6 b 実験D 9 5 2 3 1 b
上記のような場合には文字が因子に自動的に変換されています
#5列目は整数、6列目は因子 class(xc[,5]) [1] "integer" class(xc[,6]) [1] "factor"
A列、B列のF列bのみ取り出す
subset(xc,select = c(A,B),subset = F=="b") A B 実験C 5 4 実験D 9 5
A列、B列 の F列a VS b
matrixからベクトルに変換してa VS bの配列にします
(xxx <- c(as.vector(as.matrix(xca)),as.vector(as.matrix(xcb)))) xxx [1] 10 10 6 5 5 9 4 5 (dat <- array(xxx, dim = c(2,2,2))) , , 1 [,1] [,2] [1,] 10 6 [2,] 10 5 , , 2 [,1] [,2] [1,] 5 4 [2,] 9 5
項目名などを記入
name <- list("実験"=c("実験A","実験B"),"結果"=c("A","B"),F=c("a","b")) dimnames(dat)<-name dat , , F = a 結果 実験 A B 実験A 10 6 実験B 10 5 , , F = b 結果 実験 A B 実験A 5 4 実験B 9 5