理学療法士がまとめたノート

統計学備忘録(R言語のメモ)

since2016 ときどきTEXのメモ

データフレームからの抽出 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