表計算ソフトからのデータの読み込み
1)データの入力
表計算ソフトで次のような形式にデータを整える。
1行目に変数名
英字で始まる半角英数字。ただし_は使えない。
多分、8文字以内とか長さに制約あるかもしれない。
Rの関数と同じ名前にしない方がいいでしょう。
2行目以降がデータ。
例えば次のようなデータを表計算ソフト(エクセル、ロータス、gnumericなど)に入力。
エクセルなどを開いて一部でよいので入力してみる。
sampleno | name | math | english | seibetu |
1 | 大道 太郎 | 90 | 80 | 1 |
2 | 石田 幸輔 | 30 | 40 | 1 |
3 | 沢田 よしこ | 50 | 2 | |
4 | 太田 政則 | 50 | 60 | 1 |
5 | 大木 健太 | 30 | 1 | |
6 | 相川 初恵 | 20 | 40 | 2 |
エクセルの例
2)データの保存
(1)オリジナルファイル(表計算ソフト独自の形式で書式などを含んでいる)の保存
適当な名前をつけて保存。
たとえばmihondata.xls
(2)テキスト形式での保存
オリジナルファイルのままでは読み込めないので、Rで読み込めるような”(タブ区切り)テキスト形式”で保存しなおし。
エクセルの場合
ファイル->別名で保存 ->フォーマット(ファイルの種類)->テキスト(タブ区切り)
として、適当な名前で保存。
例えば mihondata.txt
このとき、桁数が大きい数字で , で区切られていると、読み込んだときに文字列として扱われるので ,表示はしない。
Mac OSX版のエクセルの場合
・確認のため、エディタやブラウザなどで開いてみてみる。
このようなものが表示されればok。
sampleno name math english seibetu
1 大道 太郎 90 80 1
2 石田 幸輔 30 40 1
3 沢田 よしこ 50 2
4 太田 政則 50 60 1
5 大木 健太 30 1
6 相川 初恵 20 40 2
3)Rでの読み込み
このような書式のファイルを読み込むのが下記の関数。
read.delim("ファイル名") |
表計算形式で、タブ区切りのデータを読みこむ。 ファイル名にはパス名も指定する。 注)Rのメニューで このファイルが保存されているフォルダをworking directoryと指定すると、パス名は省略可能。 Mac 版 Rの場合 Tool > Change working directory WIN 版 Rの場合 File > Change dir.... |
#ddというデータセットに「mihondata.txt」を読み込む。 dd<-read.delim("mihondata.txt") #表示してみる dd #入力したものと同じかをチェックしておく。 # NA は欠損値(Not Available) #全角文字が文字化けしている場合は適当なフォントを指定するとただしく表示されるかも。 #mac の場合 環境設定 WINの場合 GUI preference #簡単な記述統計を出してみる summary(dd) # NA's 欠損値の数 #最大、最小などからも入力ミスなどないかなどチェック。 #summary(dd) # sampleno name math english # Min. :1.00 êìcÅ@çKï :1 Min. :20 Min. :40 # 1st Qu.:2.25 ëäêÏÅ@èâåb :1 1st Qu.:30 1st Qu.:40 # Median :3.50 ëæìcÅ@êュë :1 Median :30 Median :50 # Mean :3.50 ëÂìケÅ@ëæòY :1 Mean :44 Mean :54 # 3rd Qu.:4.75 ëÂñÿÅ@åíëæ :1 3rd Qu.:50 3rd Qu.:60 # Max. :6.00 ëÚìcÅ@ÇÊǵDZ:1 Max. :90 Max. :80 NA's : 1 NA's : 1 # seibetu # Min. :1.000 # 1st Qu.:1.000 # Median :1.000 # Mean :1.333 # 3rd Qu.:1.750 # Max. :2.000 |
#平均を算出してみる。 mean(dd) #name は文字変数なので平均値を計算してくれないのは当然。しかしmath, english も計算されていない。 #sampleno name math english seibetu #3.500000 NA NA NA 1.333333 #mean 関数は、欠損値があると計算してくれないので、欠損値を除外して計算するというオプションを指定して再度実行。 #関数によって、欠損値の扱いが若干異なるので、どうなっているを ヘルプファイルを見てみる。 #?関数名 でその関数についてのヘルプを呼べる。 ?mean mean(dd,na.rm =TRUE) # sampleno name math english seibetu # 3.500000 NA 44.000000 54.000000 1.333333 #Warning message: #argument is not numeric or logical: returning NA in: mean.default(X[[2]], ...) hist(dd$english) plot(dd$english,dd$math) table(dd$seibetu) cor(dd$english,dd$math) #corは欠損があると計算してくれない #Error in cor(dd$english, dd$math) : missing observations in cov/cor ?cor #欠損のない完全なサンプルのみ使うことを指定 cor(dd$english,dd$math,use="complete") |
is.numeric(dd$english) #[1] TRUE is.numeric(dd$name) [1] FALSE |
hok<-read.delim("kakutei-01.txt") hok summary(hok) plot(hok$jinko,hok$setai) cor(hok$jinko,hok$setai) |
?read.delim # read.csv(file, header = TRUE, sep = ",", quote="\"", dec=".", # fill = TRUE, ...) # read.csv2(file, header = TRUE, sep = ";", quote="\"", dec=",", # fill = TRUE, ...) # read.delim(file, header = TRUE, sep = "\t", quote="\"", dec=".", # fill = TRUE, ...) # read.delim2(file, header = TRUE, sep = "\t", quote="\"", dec=",", # fill = TRUE, ...) #foreignライブラリをロードしておくと library(foreign) #STATA, SAS, SPSSなどのデータセットを読み込める。 ?read.dta ?read.spss ?read.ssd #この他は、Rのフォルダ内のlibrary/foreign/html/00Index.htmlを参照 |