2017-05-25 5 views
0

私は、同じプロットでプロットしたい2つの単純な時系列データセットがあります。同じプロットで異なる長さの2つの単純な時系列をプロットする方法

トリックは、データ・セットが異なる長さと全く異なる日付範囲にあり、である。

データセット1

 
|-----------|--------| 
| Date  | Visits | 
| 2/14/2013 | 1  | 
| 2/18/2013 | 3  | 
| 2/19/2013 | 1  | 
| 2/20/2013 | 12  | 
| 2/21/2013 | 10  | 
| 2/22/2013 | 11  | 

データセット2

 
|----------|--------| 
| Date  | Visits | 
| 5/1/2015 | 19  | 
| 5/2/2015 | 4  | 
| 5/3/2015 | 10  | 
| 5/4/2015 | 27  | 
| 5/5/2015 | 12  | 
| 5/6/2015 | 6  | 
| 5/7/2015 | 1  | 
| 5/8/2015 | 4  | 

私はそれらを同じ範囲にスケーリングし、日付を不変にして一般的な傾向を観察するために、それらを同じプロット上にプロットします(終了付近または最初の近くの訪問の増加などあります)。

私はこれが難しいとは思わないので、私は単純な概念を見逃しているに違いないと感じています。これはRで可能ですか?これがあることを

offset <- min(df2$Date) - min(df1$Date) # this would make them start at the same place 

df2.1 <- df2 
df2.1$Date <- df2.1$Date - offset 

plot(df1, xlim=range(c(df1$Date,df2.1$Date)),ylim=range(c(df1$Visits,df2$Visits)), type='l',col=2) 
lines(df2.1,col=4) 

注:2つの時系列がdata.framesとして存在している場合

+0

1つの時系列が別の時系列と重ならない場所に欠損値を追加します。 – Alexis

+0

@Alexisしかし、重なりが全くないとどうなりますか? –

+0

両方のシリーズはプロットされていないプロットされた期間に欠損値を取得します。 – Alexis

答えて

1

、あなたはこれがオフセット簡単な添加剤との迅速な方法かもしれない

df1 <- data.frame(Date=c("2/14/2013",paste0("2/",as.character(18:22),"/2013")),Visits=c(1,3,1,12,10,11)) 
df2 <- data.frame(Date=paste0("5/",as.character(1:8),"/2015"),Visits=c(19,4,10,27,12,6,1,4)) 

# turn dates into Dates 
df1$Date <- as.Date(df1$Date, format="%m/%d/%Y") 
df2$Date <- as.Date(df2$Date, format="%m/%d/%Y") 

のようにそれに近づくことができX軸上の日付は最初のデータセットに関してのみであるため、少し面倒です。 1つの厄介な回避策は、両方を数値に変換することです。

df1$Date_n <- as.numeric(df1$Date) 
df2$Date_n <- as.numeric(df2$Date) 

...と、おそらく彼らの両方が1日目

df1$Date_n <- df1$Date_n - min(df1$Date_n) + 1 
df2$Date_n <- df2$Date_n - min(df2$Date_n) + 1 

で開始しているがたぶんdf1

offset <- 0 
scale <- 1 
df2$Date_n1 <- df2$Date_n*scale + offset 

plot(df1$Date_n, df1$Visits, type='l', col=2, xlim=range(c(df1$Date_n,df2$Date_n1)), ylim=range(c(df1$Visits,df2$Visits)), xlab="day", ylab="Visits") 
lines(df2$Date_n1, df2$Visits, col=4) 
legend("topleft", legend=c("series 1","series2"),lwd=1,col=c(2,4)) 
おそらく

ないに関してdf2をプロットするためのオフセットとスケールが含まれます最も洗練されたソリューションですが、うまくいけば最小限の調整であなたをそこに連れていかなければなりません。

+0

これに応答するのが遅れますが、数字に変換すると私のために働きました、ありがとう! – ekglimmer

関連する問題