我有一張類似于下面 R 中的表格。在 2017 年 11 月,我預測了 12 月目標周 50-53 和 1 月第 1-4 周的值。我希望添加另一個名為 target_year 的列,其中包含預測值的年份,如第一個表下方的表所示。R 中有沒有辦法在列中添加正確的年份?
在實際資料集中,我提前了 30 周進行預測,并且從forecast_years = 2015-2020 和forecast_months = 1:12。
我有:
| 目標周 | 預測月 | 預測年 | 每周_級別 |
|---|---|---|---|
| 1 | 11 | 2017年 | 0.011 |
| 2 | 11 | 2017年 | 0.009 |
| 3 | 11 | 2017年 | 0.011 |
| 4 | 11 | 2017年 | 0.010 |
| 50 | 11 | 2017年 | 0.005 |
| 51 | 11 | 2017年 | 0.005 |
| 52 | 11 | 2017年 | 0.007 |
| 53 | 11 | 2017年 | 0.006 |
我希望有:
| 目標周 | 目標年 | 預測月 | 預測年 | 每周_級別 |
|---|---|---|---|---|
| 1 | 2018年 | 11 | 2017年 | 0.011 |
| 2 | 2018年 | 11 | 2017年 | 0.009 |
| 3 | 2018年 | 11 | 2017年 | 0.011 |
| 4 | 2018年 | 11 | 2017年 | 0.010 |
| 50 | 2017年 | 11 | 2017年 | 0.005 |
| 51 | 2017年 | 11 | 2017年 | 0.005 |
| 52 | 2017年 | 11 | 2017年 | 0.007 |
| 53 | 2017年 | 11 | 2017年 | 0.006 |
uj5u.com熱心網友回復:
創建一個邏輯條件來添加列
library(dplyr)
df1 <- df1 %>%
mutate(target_year = case_when(target_week < 50 ~
as.integer(forecast_year 1), TRUE ~ forecast_year), .before = 2)
-輸出
df1
target_week target_year forecast_month forecast_year weekly_level
1 1 2018 11 2017 0.011
2 2 2018 11 2017 0.009
3 3 2018 11 2017 0.011
4 4 2018 11 2017 0.010
5 50 2017 11 2017 0.005
6 51 2017 11 2017 0.005
7 52 2017 11 2017 0.007
8 53 2017 11 2017 0.006
資料
df1 <- structure(list(target_week = c(1L, 2L, 3L, 4L, 50L, 51L, 52L,
53L), forecast_month = c(11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L
), forecast_year = c(2017L, 2017L, 2017L, 2017L, 2017L, 2017L,
2017L, 2017L), weekly_level = c(0.011, 0.009, 0.011, 0.01, 0.005,
0.005, 0.007, 0.006)), class = "data.frame", row.names = c(NA,
-8L))
uj5u.com熱心網友回復:
我建議您查看滑塊包。它具有日期意識(處理諸如年末和一個月中不一致的天數之類的事情)并且基本上啟用向前和向后視窗。想想基本情況,比如允許輕松管理滾動總和和平均值。這是一個創建當前和上個月的滾動視窗并對其執行函式的示例。如果您正在查看固定間隔(周),請查看塊函式。
library(slider)
m2 <- slide_index(t$data, t$month, ~ f(.x), identity, .before = ~.x %m-% months(1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/372294.html
上一篇:如何將日期時間傳遞給建構式?
