- 締切済み
統計ソフトRでのファイル読み込み⇒折れ線グラフの作成について
統計ソフトRでのファイル読み込み⇒折れ線グラフの作成について 統計ソフトRの初心者の者です。 下記にあるようなIMFのデータをダウンロードしてRで折れ線グラフを作成したいと思っていますがうまくいきません。 http://www.imf.org/external/ns/cs.aspx?id=28 データを手打ちして作成するのはなんとかできるのですが(※参照)、データ数(たとえば国や年)が増加すると困難になります。 そこでCSVファイルを直接Rで読み込ませて作成したいと思っています。 作成したい図のイメージとしては(※)で出来上がるようなきわめてシンプルな折れ線グラフです。(MS-EXCELを使うともちろん即座に作成できるのですが練習かねてRを使って作成したいと思っています。) Rで直接ファイルを読み込ませて作成する方法をご存知でしたら教えて下さい。 GDP<-read.csv("ファイル名",sep=",",dec=".",header = T) としてファイル名を読み込ませるくらいの事はわかりますがその先で詰まっている状況です。 R-TIPsとか読んでもうまく解決しないので質問しました。 よろしくお願いいたします。 <※> yr <- c( 2000:2010 ) CN <- c(5.233,1.784,2.925,1.881,3.12,3.019,2.854,2.531,0.414,-2.479,2.125) FR <- c(4.073,1.759,1.065,1.077,2.274,1.941,2.416,2.26,0.323,-2.358,0.903) GR <- c(3.224,1.151,0.006,-0.231,1.176,0.732,3.176,2.516,1.248,-5.297,0.336) pr <- data.frame(c=CN, f=FR, g=GR) matplot(yr, pr, type="b", ylab="GDP", xlab="yr",main="GDP変化率 2000-2010", pch=c(3,2,1), col=c("darkorchid1","cyan3","aquamarine3") ) legend(1,max(pr),legend=colnames(pr), col=c("darkorchid1","cyan3","aquamarine3"), lty=c(1:3),pch=c(3,2,1) ) (ちなみに上記で用いているデータに関しては各3国の2000-2010年のGross domestic product, constant prices Annual percent changeになります)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
World Economic Outlook Database October 2009のEntire Datasetを使用した場合で説明します。 まず、WEOOct2009all.xlsをcsv形式に変換します。 そのあと、Rから GDP <- read.csv(filename, sep = "\t", colClasses = c("integer", rep("factor", 8), rep("numeric", 36)), nrows = 6007, na.strings = c("\"n/a\"", "\"--\"")) でデータフレームへ読み込みます。 上はタブ区切りの場合です。 nrows = 6007は最後の行に余計な文字列があるため、na.strings = c("\"n/a\"", "\"--\"")はn/aと--が数値に変換できないので、無視するために加えています。 次に pr <- subset(GDP, subset = Subject.Descriptor == "Gross domestic product, constant prices" & Units == "Annual percent change")[, c(4, 10:44)] で、Gross domestic product, constant pricesとAnnual percent changeのデータを抜き出しています。勿論Excelで修正したものをRに読み込んでもいいです。、 matplot(1980:2014, t(pr[, -c(1)]), type = "b", ylab = "GDP", xlab = "yr", main = "GDP変化率 1980-2014", pch = 1, col = rainbow(n = nrow(pr2))) で図を作成します。 t(pr[, -c(1)])で国名を抜いて、行と列を入れ替えています。 国の数が多いためpchは1で固定しています。 色はrainbowで指定していますが、国の数が多すぎて色の違いがはっきりわかりません。 特定の国のみ図にしたいのなら、 cntry <- c("China", "France", "Germany", "Japan", "United States") pr2 <- pr[match(cntry, pr$Country), ] matplot(1980:2014, t(pr2[, -c(1)]), type = "b", ylab = "GDP", xlab = "yr", main = "GDP変化率 1980-2014", pch = 1, col = rainbow(n = nrow(pr2))) 他にもいい方法があるかもしれませんが、参考にしてください。