Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于日期的计算_R_Date - Fatal编程技术网

R 基于日期的计算

R 基于日期的计算,r,date,R,Date,我有一个实际观察数据集df1: Date Month Year Actual 02/12/2017 December 17 4623 12/12/2017 December 17 5111 22/12/2017 December 17 4800 22/12/2017 December 17 4769 02/01/2018 January 18 4711 03/01/2018 January 18 4503 0

我有一个实际观察数据集df1:

Date        Month     Year  Actual
02/12/2017  December    17  4623
12/12/2017  December    17  5111
22/12/2017  December    17  4800
22/12/2017  December    17  4769
02/01/2018  January     18  4711
03/01/2018  January     18  4503
04/01/2018  January     18  4650
05/01/2018  January     18  4598
06/02/2018  February    18  4612
07/02/2018  February    18  4493
08/02/2018  February    18  4515
09/02/2018  February    18  4469
然后是我每月的预测df2:

Month     Year  Prediction
December  17    4874
January   18    4626
February  18    4576
如何从基于每月和每年的实际值中减去预测值?因此,我会得到以下错误:

Error
-251
237
-74
-105
85
-123
24
-28
36
-83
-61
-107

请注意,问题中的结果是错误的,因为年份与2018年的实际值不匹配

1)基本R左键连接数据帧并执行减法:

transform(merge(act, pred, all.x = TRUE, sort = FALSE), Diff = Prediction - Actual)
给予:

      Month Year       Date Actual Prediction Diff
1  December   17 02/12/2017   4623       4874  251
2  December   17 12/12/2017   5111       4874 -237
3  December   17 22/12/2017   4800       4874   74
4  December   17 22/12/2017   4769       4874  105
5   January   18 02/01/2018   4711         NA   NA
6   January   18 03/01/2018   4503         NA   NA
7   January   18 04/01/2018   4650         NA   NA
8   January   18 05/01/2018   4598         NA   NA
9  February   18 06/02/2018   4612         NA   NA
10 February   18 07/02/2018   4493         NA   NA
11 February   18 08/02/2018   4515         NA   NA
12 February   18 09/02/2018   4469         NA   NA
         Date    Month Year Actual Prediction Diff
1  02/12/2017 December   17   4623       4874  251
2  12/12/2017 December   17   5111       4874 -237
3  22/12/2017 December   17   4800       4874   74
4  22/12/2017 December   17   4769       4874  105
5  02/01/2018  January   18   4711         NA   NA
6  03/01/2018  January   18   4503         NA   NA
7  04/01/2018  January   18   4650         NA   NA
8  05/01/2018  January   18   4598         NA   NA
9  06/02/2018 February   18   4612         NA   NA
10 07/02/2018 February   18   4493         NA   NA
11 08/02/2018 February   18   4515         NA   NA
12 09/02/2018 February   18   4469         NA   NA
sqldf

library(sqldf)
sqldf("select *, Prediction - Actual as Diff  
       from act left join pred using(Year, Month)")
给予:

      Month Year       Date Actual Prediction Diff
1  December   17 02/12/2017   4623       4874  251
2  December   17 12/12/2017   5111       4874 -237
3  December   17 22/12/2017   4800       4874   74
4  December   17 22/12/2017   4769       4874  105
5   January   18 02/01/2018   4711         NA   NA
6   January   18 03/01/2018   4503         NA   NA
7   January   18 04/01/2018   4650         NA   NA
8   January   18 05/01/2018   4598         NA   NA
9  February   18 06/02/2018   4612         NA   NA
10 February   18 07/02/2018   4493         NA   NA
11 February   18 08/02/2018   4515         NA   NA
12 February   18 09/02/2018   4469         NA   NA
         Date    Month Year Actual Prediction Diff
1  02/12/2017 December   17   4623       4874  251
2  12/12/2017 December   17   5111       4874 -237
3  22/12/2017 December   17   4800       4874   74
4  22/12/2017 December   17   4769       4874  105
5  02/01/2018  January   18   4711         NA   NA
6  03/01/2018  January   18   4503         NA   NA
7  04/01/2018  January   18   4650         NA   NA
8  05/01/2018  January   18   4598         NA   NA
9  06/02/2018 February   18   4612         NA   NA
10 07/02/2018 February   18   4493         NA   NA
11 08/02/2018 February   18   4515         NA   NA
12 09/02/2018 February   18   4469         NA   NA
笔记 可复制形式的输入为:

Lines1 <- "
Date        Month     Year  Actual
02/12/2017  December    17  4623
12/12/2017  December    17  5111
22/12/2017  December    17  4800
22/12/2017  December    17  4769
02/01/2018  January     18  4711
03/01/2018  January     18  4503
04/01/2018  January     18  4650
05/01/2018  January     18  4598
06/02/2018  February    18  4612
07/02/2018  February    18  4493
08/02/2018  February    18  4515
09/02/2018  February    18  4469"
act <- read.table(text = Lines1, header = TRUE, as.is = TRUE)

Lines2 <- "
Month     Year  Prediction
December  17    4874
January   17    4626
February  17    4576"
pred <- read.table(text = Lines2, header = TRUE, as.is = TRUE)

Lines1再次使用G Grothendieck提供的数据,包括对1月和2月年份的评论,您可以使用dplyr执行此操作:

library(dplyr)
act %>% 
  full_join(pred) %>% 
  mutate(Error = Actual - Prediction) %>% 
  select(-Prediction)



         Date    Month Year Actual Error
1  02/12/2017 December   17   4623  -251
2  12/12/2017 December   17   5111   237
3  22/12/2017 December   17   4800   -74
4  22/12/2017 December   17   4769  -105
5  02/01/2018  January   18   4711    85
6  03/01/2018  January   18   4503  -123
7  04/01/2018  January   18   4650    24
8  05/01/2018  January   18   4598   -28
9  06/02/2018 February   18   4612    36
10 07/02/2018 February   18   4493   -83
11 08/02/2018 February   18   4515   -61
12 09/02/2018 February   18   4469  -107
数据:


Lines1请提供可复制的数据。感谢您的帮助以及如何使数据可复制,因为我不确定如何做到这一点。我将在将来使用它。