R_データの読み込み のバックアップソース(No.1) - アールメカブ

アールメカブ


R_データの読み込み のバックアップソース(No.1)

|this| is| a| data|
|171| 62.6| 23| 1|
|158 |49.8 |25 |0|
|163 |68.7 |42 |1|
|178 |75.4 |33 |1|
|163 |55.7 |28 |0|
 

というデータがあるとして,
 
 
 > z <- scan("2data.txt",skip=1)
 Read 20 items
 > z
 [1] 171.0 62.6 23.0 1.0 158.0 49.8 25.0 0.0 163.0 68.7 42.0 1.0
 [13] 178.0 75.4 33.0 1.0 163.0 55.7 28.0 0.0
 
 一行にまとめられる.
 
 > z <- scan("2data.txt",list(height="",weight="",sex=""),skip=1)
 Read 7 records
 > z
 $height
 [1] "171" "1" "25" "68.7" "178" "1" "28" 
 
 $weight
 [1] "62.6" "158" "0" "42" "75.4" "163" "0" 
 
 $sex
 [1] "23" "49.8" "163" "1" "33" "55.7" "" 
 
 数値も文字列として読み込んでしまう.
 
 > z <- scan("2data.txt",list(height=0,weight=0,sex=""),skip=1)
 Read 7 records
 > z
 $height
 [1] 171.0 1.0 25.0 68.7 178.0 1.0 28.0
 
 $weight
 [1] 62.6 158.0 0.0 42.0 75.4 163.0 0.0
 
 $sex
 [1] "23" "49.8" "163" "1" "33" "55.7" "" 
 
 身長と体重を数値データとして読みこんだ. オプションは 1 でも良いらしい.
 
 ここで次のようなデータセットを考えてみる.
 
this is a data
 171 62.6 23 M
 158 49.8 25 F
 163 68.7 42 M
 178 75.4 33 M
 163 55.7 28 M
 

   > z <- scan("2data.txt",list(height=0,weight=0,age=0,sex=""),skip=1)
 Read 5 records
 > z
 $height
 [1] 171 158 163 178 163
 
 $weight
 [1] 62.6 49.8 68.7 75.4 55.7
 
 $age
 [1] 23 25 42 33 28
 
 $sex
 [1] "M" "F" "M" "F" "M"
 
 最後のsexが文字データとして読み込まれている. これを今後の処理の都合上, 因子オブジェクトに変更する.
 
 > z <- scan("2data.txt",list(height=0,weight=0,age=0,sex=""),skip=1)
 Read 5 records
 > z
 $height
 [1] 171 158 163 178 163
 
 $weight
 [1] 62.6 49.8 68.7 75.4 55.7
 
 $age
 [1] 23 25 42 33 28
 
 $sex
 [1] "M" "F" "M" "F" "M"
 
 > z$sex <- factor(z$sex)
 > z
 $height
 [1] 171 158 1以下は適合度の検定です63 178 163
 
 $weight
 [1] 62.6 49.8 68.7 75.4 55.7
 
 $age
 [1] 23 25 42 33 28
 
 $sex
 [1] M F M F M
 Levels: F M
 
 ただし,この段階だとデータフレームとして不完全.
 
 > summary(z)
 Length Class Mode 
 height 5 -none- numeric
 weight 5 -none- numeric
 age 5 -none- numeric
 sex 5 factor numeric
 
 > z[[1]]
 [1] 171 158 163 178 163
 > z[1,]
 Error in z[1, ] : incorrect number of dimensions
 > z[,1]
 Error in z[, 1] : incorrect number of dimensions
 > z[[2]]
 [1] 62.6 49.8 68.7 75.4 55.7
 
 そこで
 
 > df <- data.frame(z$height, z$weight, z$age, z$sex)
 > df
 z.height z.weight z.age z.sex
 1 171 62.6 23 M
 2 158 49.8 25 F
 3 163 68.7 42 M
 4 178 75.4 33 F
 5 163 55.7 28 M
 
 なお [1,] で一行目全て, [,1] は一列目全てを意味する.
 
 > df[1,]
 z.height z.weight z.age z.sex
 1 171 62.6 23 M
 > df[,1]
 [1] 171 158 163 178 163
 以下は適合度の検定です
 ここで 
 
 > summary(df)
 z.height z.weight z.age z.sex
 Min. :158.0 Min. :49.80 Min. :23.0 F:2 
 1st Qu.:163.0 1st Qu.:55.70 1st Qu.:25.0 M:3 
 Median :163.0 Median :62.60 Median :28.0 
 Mean :166.6 Mean :62.44 Mean :30.2 
 3rd Qu.:171.0 3rd Qu.:68.70 3rd Qu.:33.0 
 Max. :178.0 Max. :75.40 Max. :42.0 
 > 
 
 
 なお次のようなファイルの場合
 
lineNr, Words
 00001,6
 00002,15
 00003,13
 ...
 00027,3
 00028,23
 

   
 gesetz <- read.table("gesetz.csv",sep=",", header=TRUE)
 
 と明示的に ヘッダがあることを指定する必要あり.
 
 
 一行目にタイトルなど,データ以外があれば
 
 gesetz <- read.table("gesetz.csv",sep=",", header=TRUE, skip=1)
 
 と明示的に ヘッダがあることを指定する必要あり.