subset関数で層別化したデータセット
以下のようなデータセットを男女で層別したセットに変更します
id 年齢 性 身長 1 39 女 162.6 2 39 女 161.4 3 41 男 174.1 4 41 女 154.7 5 42 男 184.7 6 43 男 169.3 7 43 男 163.2 8 43 男 164.4 9 44 男 167.8 10 44 男 168.5 11 44 女 154.8 12 45 男 158.5 13 45 男 162.9 14 45 男 161.4 15 45 男 165.9 16 46 男 171.4 17 46 男 172.6 18 47 男 167.6 19 47 男 171.5 20 48 男 166.4 21 48 男 169.2 22 48 男 165.3 23 48 男 167.2 24 48 男 170.2 31 50 女 153.6 32 50 女 163.6 34 51 女 156.6 35 51 女 152.4 36 52 女 146.8 37 52 女 160.7
上記のデータをコピーしてRにペーストします
data <- read.table("clipboard", header=T)
男性のみのデータセット data_m、女性のみのデータセット data_f
data_m <- subset(data, data$性=="男") data_f <- subset(data, data$性=="女")
男性で身長160cm台のデータセット data_m_160
mh01 <- subset( data, 性=="男" & 身長 >= 160 & 身長 < 170 )
男性で身長165cm以下と170cm以上の群
mh02 <- subset( data, 性=="男" & 身長 <= 165 | 身長 >= 170 )
男性で身長160cm台の人数
それぞれのデータセットのn(行数)を確認する
nrow(mh01);nrow(mh02)
身長の差の検定 年齢40未満 vs 年齢48より上
d45 <- subset(data,年齢<45) d48 <- subset(data,年齢>48) t.test(d45$身長,d48$身長) #subset使用せずに、次のように書くことも可能 t.test(data[data[,2]<45,4],data[data[,2]>48,4])
CSVファイルの取り込み
下記のサイトに移転いたしました
データフレームの列を入れ替えて、欠損値のある行を除外する
忘れないうちに書いときます
欠損値のあるデータセットを用意します
x <- LETTERS[1:10] y <- c(1,2,NA,2,4,NA,5,1,2,5) z <- c(1,2,2,1,1,2,2,1,1,1) xyz <- data.frame(x,y,z) x y z 1 A 1 1 2 B 2 2 3 C NA 2 4 D 2 1 5 E 4 1 6 F NA 2 7 G 5 2 8 H 1 1 9 I 2 1 10 J 5 NA
Z列とY列を入れ替えます
a <- data.frame(xyz[,1]) b <- data.frame(xyz[,2]) c <- data.frame(xyz[,3]) xzy <- data.frame(a,c,b) colnames(xzy) <- c("x","z","y") x z y 1 A 1 1 2 B 2 2 3 C 2 NA 4 D 1 2 5 E 1 4 6 F 2 NA 7 G 2 5 8 H 1 1 9 I 1 2 10 J NA 5
欠損値を含む行を全て除外します
xzy_cc <- complete.cases(data.frame(xzy)) #欠損値を含む行にFALSEを返す関数・・・だからxzy_ccは完璧(complete)な行 dataset <- xzy[xzy_cc,] x z y 1 A 1 1 2 B 2 2 4 D 1 2 5 E 1 4 7 G 2 5 8 H 1 1 9 I 1 2
この処理は暗記してたがよさそうです
コピーした1行のデータをベクトルに変換
以下のようなデータをコピーしてRのベクトルに変換する方法です
10 12 14 15 18
まず以下のように入力します
x = scan()
するとコンソールに次のように表示されます
> x = scan() 1:
この1: の横に10 12 14 15 18をペーストして、enterを2回
> x = scan() 1: 10 12 14 15 18 6: Read 5 items
これでベクトルに変換できました
str(x) num [1:5] 10 12 14 15 18
ノンパラメトリック 相関係数
[,1] [,2] [,3] [1,] 27 14 5 [2,] 10 17 26 [3,] 5 12 50
上記の分割表から行の順序スコアと列の順序スコアを算出してデータセットを作成します
#RANK xr1 <- c(rep(23.5,46),rep(73,53),rep(133,67)) xc1 <- c(rep(21.5,27),rep(64,14),rep(125,5),rep(21.5,10),rep(64,17), rep(125,26),rep(21.5,5),rep(64,12),rep(125,50))
データのイメージ
xr1_xc1 <- data.frame(xr1, xc1)
相関係数を求めます
cor_r_p <- cor.test(xr1,xc1,method = "pearson") #ピアソン cor_r_s <- cor.test(xr1,xc1,method = "spearman") #スピアマン
上記の分割表から表スコアを0,1,2としてデータセットを作成します
#TABLE xr2 <- c(rep(0,46),rep(1,53),rep(2,67)) xc2 <- c(rep(0,27),rep(1,14),rep(2,5),rep(0,10),rep(1,17), rep(2,26),rep(0,5),rep(1,12),rep(2,50))
データセットにイメージ
xr2_xc2 <- data.frame(xr2, xc2)
表スコアから相関係数を求めます
cor_t_p <- cor.test(xr2,xc2,method = "pearson") #ピアソン cor_t_s <- cor.test(xr2,xc2,method = "spearman") #スピアマン
Rstudioの小ネタ (パッケージやファイルの保存方法)
Rstudioを閉じても、PC再起動してもファイルの読み込みやインストールしたパッケージは残せます (ただしパッケージは休んでいますので、起動するときにはlibraryで起こしましょう)
データ処理する前に必ず行う作業は以下の通りです
まずRstudioを起動させた状態で・・・
FileメニュからNewProject → NewProject → NewProjectと進んでいきます
Projectの名前を適当に書いてください(例:test001)、次に場所をしてしてください(as you like).
以下のように一つのフォルダの中に「---.Rhistory」と「---.Rproj」が入ってたら OK
データファイルも同じフォルダに収納します
次回から「---.Rproj」をダブルクリックしてRstudioを起動させてください
前回までに取り込んだデータは右上に表示され、そのまま使用可能です.
また右下に同じフォルダにあるデータファイルが表示されます.ここから直接データを取り込むこともできます.
またインストールしたパッケージも記憶されていますので、library( )で起動させるだけで使用できます.
Rで簡単 多重ロジスティック回帰分析
下記のサイトに移転いたしました