2016-12-08 21 views
1

私はデータフレームとしてRにロードしています。この形式のものであるデータファイルがあります:私はそのようXTS()は、週として理解して何かに最初のフィールドを変換するにはどうすればよいRでテキストフィールドを週(時系列変数)に変換する方法は?

Week,Sales 
"Jan WK01, FY14",99 
"Jan WK02, FY14",754 
"Jan WK03, FY14",841 
"Jan WK04, FY14",722 
"Feb WK01, FY15",846 
"Feb WK02, FY15",927 
"Feb WK03, FY15",940 
"Feb WK04, FY15",661 
"Mar WK01, FY15",729 
"Mar WK02, FY15",916 
"Mar WK03, FY15",1317 
"Mar WK04, FY15",1415 
"Mar WK05, FY15",1462 

を私は販売の時系列を分析することができますか?

私はこのエラーを回避したい:

Error in xts(Data, order.by = Data$Week) : 
order.by requires an appropriate time-based object 

答えて

3

次の関数は"Date"クラス変数を入力し、次の月曜日の"Date"を出力します。

​​

(つまり、異なるバージョンのは、ここで私の答えで見つけることができます:動物園パッケージのQuick Reference vignetteExtract first Monday of every monthと次の金曜日のための対応する関数)。

は、今、私たちはその月(fom)の最初の週番号(wk)を導き出すことができます(再現性与えられたxについては下記注意参照)質問者の入力文字列xを与えられました。月と週の所定の最初に対応する日付は、wkが1の場合、月の開始またはそれ以降の次の月曜日であり、wkが2の場合は7日後、週が3の場合は14日後となります。

fom <- as.Date(sub("WK.*FY", "1 ", x), "%b %d %y") # first of month 
wk <- as.numeric(gsub(".*WK|,.*", "", x)) # week number 
nextMon(fom) + 7 * (wk-1) 

与える:財政・カレンダー年が異なっているならば、答えはさらに期末が実際に何であるかに基づいて調整されなければならないことを

[1] "2014-01-06" "2014-01-13" "2014-01-20" "2014-01-27" "2015-02-02" 
[6] "2015-02-09" "2015-02-16" "2015-02-23" "2015-03-02" "2015-03-09" 
[11] "2015-03-16" "2015-03-23" "2015-03-30" 

注意を。

日曜日から始まる週を希望する場合は、nextMonの1を0に置き換えてください。

注:

x <- c("Jan WK01, FY14", "Jan WK02, FY14", "Jan WK03, FY14", "Jan WK04, FY14", 
"Feb WK01, FY15", "Feb WK02, FY15", "Feb WK03, FY15", "Feb WK04, FY15", 
"Mar WK01, FY15", "Mar WK02, FY15", "Mar WK03, FY15", "Mar WK04, FY15", 
"Mar WK05, FY15") 
我々は、再現ここに入力 xを定義します
関連する問題