私は自分で正しい結果を得られないので、もう一度あなたの助けが必要です。特定の開始日と終了日の間の各四半期の平均価格を計算しますか?
私のデータはそのように何とかなります。私が欲しいもの
product startdate enddate city cost double
1 1999-01-03 2001-02-01 Boston 8 0
2 2000-07-06 2001-11-24 New York 10,5 0
...
は私の都市と地区で割った平均コストを示す表です。私がこれまでにやった
:
df <- read_csv2("mydata.csv")
#subset data
double <- df$double
df2 <- subset(df,double==0)
#date class
startdate <- strptime(df2$startdate,format="%Y-%m-%d")
library(zoo)
quarter <- as.yearqtr(startdate,"%Y-%m-%d")
table <- tapply(cost,list(df2$city,quarter),mean)
表Iは、おそらくそのようになります:
City 2011 Q1 2011 Q2 2011 Q3
New York 10 11,2 11,7
Boston 9 9,5 9,9
私の問題は、私はSTARTDATEと終了日を持っているということです。表は私に開始日に依存する四半期を示しています。 同じテーブルを取得したいと思いますが、四半期には終了日を含める必要があります。つまり、startdateが2006-01-01で終了日が2006-08-01の場合、私の項目は四半期にオンラインになった2006年第1四半期、2006年第2四半期第3四半期 私の商品の価格は全期間同じですが、四半期ごとの平均価格を計算する際には、製品がオンラインになっている四半期ごとに価格を含める必要があります。
#enddate , date class
today <- Sys.Date()
df2[["enddate"]][is.na(df2[["enddate"]])] <- today
enddate <- strptime(df2$enddate,format="%Y-%m-%d")
は、今私は、日付の間隔やカット日付での作業のようないくつかのことを試してみたが、これはまったく機能しませんでした:私は、終了日のクラスを変更されたのは何
ありがとうございました!
で開始
は、あなたの答えをどうもありがとうございます、私が何をする必要があるかを理解たくさん助け。残念ながら、seq関数を使用するとエラーが発生します。私がしたのは、日付オブジェクトを日付オブジェクトにフォーマットすることでした。この次のステップを実行したいとき:Quarters < - D [、。(getSeriesV(Date.Start、Date.End))]エラーが発生する:[seq.Dateのエラー(from = start、to = end、by = "3 months"): 'from'は長さ1でなければなりません。私のDate.Startオブジェクトの長さは1158(すべての製品の開始日)で、次のようになります。> D $ Date.Start [1] "2016-06-18" "2013-06-30" "2016-06-28 "" 2016-06-24 "" 2014-01-14 ".... –
Tim、' getSeriesV() '関数を得るために' getSeries() '関数をベクトル化しましたか?これを 'getSeriesV < - Vectorize(getSeries)'で行います。それが動作するかどうか確認してください。 –
私の悪い、完璧に働いた!次のステップを実行するときにまだ問題があります:de < - d [rep(名前、繰り返し)]私の新しいデータフレーム "de"はすべてをNAに設定しますか? > str(de) クラス 'tbl_df'、 'tbl'、 'data.frame':\t 4036 obs。 183変数のうち $都市:chr NA NA NA NA NA NA NA NA NA ... $ enddate:日付、形式:NA NA ... $ startdate:日付、形式:NA NA ... –