2016-09-21 4 views
0

私はRを使用しています。私は1900年に戻って毎日のテーブルを持っています。1900年に始まるベクトルのいくつかは、各ベクトルを日付ベクトルに対してプロットします。更新のためのggplot2小さなものが始まるときと異なる長さの2つのベクトルをプロットする

structure(list(Date = structure(c(5L, 6L, 7L, 8L, 1L, 2L, 3L, 
4L), .Label = c("1/3/1928", "1/4/1928", "1/5/1928", "1/6/1928", 
"12/28/1927", "12/29/1927", "12/30/1927", "12/31/1927"), class = "factor"), 
DJIA = c(198.6, 199.96, 200.7, 202.4, 203.35, 202.24, 199.61, 
201.45), SPX = c(NA, NA, NA, NA, 17.76, 17.72, 17.55, 17.66 
)), .Names = c("Date", "DJIA", "SPX"), class = "data.frame", row.names = c(NA, 
-8L)) 
+2

を呼び出すことにより、SPXのためのプロットを得ることができ、たとえば

myCOL <- c("DJIA", "SPX") #names of columns, note they are in quotes. This is because we're using aes_string allPLOT <- lapply(myCOL, function(x) myplot(d, "Date", x)) names(allPLOT) <- myCOL #naming the elements of the list 

すべてのプロットは、現在リストに格納されているコードと各列を描画することができます。この機能で

私たちはいくつかのデータを持っていますので、あなたの質問にもっと対応することができます –

+0

あなたの興味のために@Jacob Hありがとうございます。私はこのサイトにcsvファイルをアップロードする方法がわからないので、基本的な説明をします。私のcsvファイルの最初の3列は、日付、ダウ・ジョーンズ工業平均終値、S&P500終値です。しかし、最初の2つの列は1900年に戻るデータです。しかし、S&Pは1928年に始まったばかりなので、1928年まで空のセルがあります。ggplot2 geom_lineを使って各列を日付列に対してプロットしています。プロットは各列の最初の値から開始し、1900年に始まるとは限りません。 – MBA

+0

TY @JacobH csvファイルをアップロードする方法がわからないので、例を挙げます。最初の3つの列は、日付、ダウ・ジョーンズ工業平均終値、S&P500終値です。最初の2つの列は1900年までのデータを持ちます。S&Pは1928年に始まったばかりなので、1928年まで空のセルがあります。ggplot2 geom_lineを使用して各列を日付に対してプロットしています。私は、各列の最初の値から始まり、常に1900年に始まるとは限りません。ggplot(master、aes(date、SPX))+ geom_line(stat = "identity"、na.rm = T)+ scale_x_date labels = date_format( "%m /%d /%Y")、date_breaks = '5 years') – MBA

答えて

0

ありがとう:しかし、私はいつもここで

1900年に開始Y-ベクトルが始まるといない時に開始するように、各プロットを希望することは一例です!への最も簡単な方法

d$Date <- as.Date(d$Date, "%m/%d/%Y") 

、私は正しく、我々は最初の Dateにそれを変更する必要がありますプロットするために、このデータを持つ最初の問題は、 Dateが要因であるということである d

d <- structure(list(Date = structure(c(5L, 6L, 7L, 8L, 1L, 2L, 3L, 
           4L), .Label = c("1/3/1928", "1/4/1928", "1/5/1928", "1/6/1928", 
               "12/28/1927", "12/29/1927", "12/30/1927", "12/31/1927"), class = "factor"), 
      DJIA = c(198.6, 199.96, 200.7, 202.4, 203.35, 202.24, 199.61, 
        201.45), SPX = c(NA, NA, NA, NA, 17.76, 17.72, 17.55, 17.66 
        )), .Names = c("Date", "DJIA", "SPX"), class = "data.frame", row.names = c(NA, 
                           -8L)) 

あなたのデータを呼ぶことにしましょうあなたの所望の出力を達成することは

ggplot(d[complete.cases(d[,c("Date", "SPX")]), ], aes(x = Date, y = SPX)) + 
    geom_line() 

しかし、私はあなたがグラムだろう容疑者を次のようにNAを削除することですこれらの数字の多くを演奏しています。あなた自身のプロット関数を作成する方がいいでしょう。

myplot <- function(data, myX, myY){ 
    data <- data[complete.cases(data[,c(myX, myY)]), ] 
    ggplot(data, aes_string(x = myX, y = myY))+ 
    geom_line() 
} 

aes_stringに注目してください。これにより、変数名の受け渡しが簡単になります。 aesを使用することは可能ですが、少し複雑です。あなたが提供してください

allPLOT$SPX 
+0

私はあなたの最初のバージョンを使用しました。私はこのエラーがあります:geom_path:各グループは1つの観測のみで構成されています。あなたはグループの美学を調整する必要がありますか? – MBA

+0

助けてくれてありがとう@JacobHしかし、私はあなたの2番目のバージョンを試したときに私はこのエラーがあります:geom_path:各グループは1つの観測のみで構成されています。あなたはグループの美学を調整する必要がありますか? y値が始まるとx軸が始まりますが、何も表示されません – MBA

+0

私はそれを得ました!私は何らかの理由で – MBA

関連する問題