2016-10-11 6 views
0

移動予定の休暇とはあまり関係ない予測があります。ここでrの特定の行に先行または遅れ列を変更してください

は私のデータフレームの構造である:

df1: 
Date   City   Visitors  WKN WKN_2015 Holiday 
2016-11-06 New York  40000   45  46   No_Holiday 
2016-11-13 New York  50000   46  47   No_Holiday 
2016-11-20 New York  50000   47  48   Thanksgiving 
2016-11-27 New York  100000  48  49   Cyber_Monday 
2016-12-04 New York  100000  49  50   No_Holiday 
2016-12-11 New York  70000   50  51   No_Holiday 
. 
. 
. 
2017-11-23 New York  120000  47  47   Thanksgiving 

一般的にあなたが感謝祭の日とサイバー月曜日の街に多くの訪問者を持っているでしょう、私は簡単な修正を見つけようとしています。しかし、私の予測はそれを反映していません。あなたは上記のデータが表示された場合、新しいボリュームだけ感謝祭、サイバー月曜日とサイバー月曜日週間後に変更

df1: 
Date   City   Visitors  WKN WKN_2015 Holiday  New_Visitors 
2016-11-06 New York  40000   45  46   No_Holiday  40000 
2016-11-13 New York  50000   46  47   No_Holiday  50000  
2016-11-20 New York  50000   47  48   Thanksgiving 100000 
2016-11-27 New York  100000  48  49   Cyber_Monday 100000 
2016-12-04 New York  100000  49  50   No_Holiday  70000 
2016-12-11 New York  70000   50  51   No_Holiday  70000 
. 
. 
. 
2017-11-23 New York  120000  47  47   Thanksgiving 120000 

:今、私はこのようないくつかのことで簡単な修正をしたいと思います。 2017などのデータが続くため、これを自動化する方法はありますか?

移動する休日に合わせて予測を作成するまで、私は迅速な修正を考えていました。誰かが私を正しい方向に向けることができますか?

私はこのような何かを試してみましたが、私はのみ3週間のラグ/リードを必要とするので、これは動作しません:

df1 <- 
df1 %>% 
mutate(New_Visitors = ifelse(Holiday == "Thanksgiving", lag(Visitors, (WKN - WKN_2015), Visitors) 

ロジック:毎年感謝祭のために検索し、WKNの試合かどうかを確認します。 WKNの違いに基づいて、感謝祭を始めて次の3週間訪問者を調整しないでください。 WKN-WKN_2015は== -1、次の3行に対して1で訪問者をリードしている場合WKN-WKN_2015 == 1は、次の3行に対して1で

データを訪問者に遅れる場合
df1 <- structure(list(Date = c("2016-11-06", "2016-11-13", "2016-11-20", 
"2016-11-27", "2016-12-04", "2016-12-11", "2017-11-23"), City = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = "New York", class = "factor"), 
    Visitors = c(40000L, 50000L, 50000L, 100000L, 100000L, 70000L, 
    120000L), WKN = c(45L, 46L, 47L, 48L, 49L, 50L, 47L), WKN_2015 = c(46L, 
    47L, 48L, 49L, 50L, 51L, 47L), Holiday = structure(c(2L, 
    2L, 3L, 1L, 2L, 2L, 3L), .Label = c("Cyber_Monday", "No_Holiday", 
    "Thanksgiving"), class = "factor")), .Names = c("Date", "City", 
"Visitors", "WKN", "WKN_2015", "Holiday"), row.names = c(NA, 
7L), class = "data.frame") 
+0

は本当にあなたの見通しが何をしているかを理解していないが、あなたは '使用することができます%<>%'(往復パイプ)(...) 'と言うDF1 <- df1 %>%の変異します' 'df1%<>%mutate(...)' – Nate

+0

@ NathanDay毎年感謝祭を見て、WKNがマッチしているかどうかを確認してください。そうでなければ、WKNの違いに基づいて感謝祭を始めて次の3週間を調整してください。 WKN-WKN_2015 == -1の場合、訪問者数は1、WKN-WKN_2015 == 1の場合は、次の3行の訪問者数は1ずつ減少します。 –

+0

'value'と' Volume'はどこから来ますか? – Nate

答えて

1

あなただけの3人に興味あり1週間に1回、あなたは「感謝祭」の行のラグ値を計算することができます。私はdplyrがそれをする必要があるとは思わない。

​​
> df1 # this method treats the three weeks as a unit, so made two NA rows in the example data) 
     Date  City Visitors WKN WKN_2015  Holiday New_Visitors 
1 2016-11-06 New York 40000 45  46 No_Holiday  40000 
2 2016-11-13 New York 50000 46  47 No_Holiday  50000 
3 2016-11-20 New York 50000 47  48 Thanksgiving  100000 
4 2016-11-27 New York 100000 48  49 Cyber_Monday  100000 
5 2016-12-04 New York 100000 49  50 No_Holiday  70000 
6 2016-12-11 New York 70000 50  51 No_Holiday  70000 
7 2017-11-23 New York 120000 47  47 Thanksgiving  120000 
8  <NA>  <NA>  NA NA  NA   <NA>   NA 
9  <NA>  <NA>  NA NA  NA   <NA>   NA 
関連する問題