'R:Error in `[.data.frame` undefined columns selected

I have this data sample dput()

timeseries=structure(list(sales_point_id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L), calendar_id_operday = c(1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
20L, 21L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L), line_fact_amt = c(55767L, 
59913L, 36363L, 48558L, 505L, 76344L, 22533L, 11965L, 78944L, 
36754L, 30621L, 55716L, 32470L, 62165L, 57986L, 2652L, 16487L, 
72849L, 73715L, 65656L, 64411L, 47460L, 61866L, 10877L, 72392L, 
53011L, 23544L, 76692L, 10388L, 24255L, 56684L, 59329L, 6655L, 
65612L, 17495L, 10389L, 63702L, 47407L, 78782L, 22898L, 21151L, 
32587L)), class = "data.frame", row.names = c(NA, -42L))

calendar_id_operday=1 its mean range of week 20210101-20210108(ymd) but here there is no date format only week, just such a specificity of these data . I try transform my data.

library(reshape)
df <- cast(melt(timeseries, id=c("calendar_id_operday"), na.rm=TRUE), 
           line_fact_amt + calendar_id_operday)[, c("line_fact_amt", "calendar_id_operday", substring(month.name, 1, 3))]
colnames(df)[1] <- "sales_point_id"
df[, substring(month.name, 1, 3)] <- lapply(timeseries[, substring(month.name, 1, 3)], 
                                            function(x) as.numeric(as.character(x)))

But something goes wrong

Error in `[.data.frame`(timeseries, , substring(month.name, 1, 3)) :
   undefined columns selected 

I want that as the result i got this data.frame

sales_point_id year   jan-1    jan-2      jan-3    jan-4   feb1
1      1       2021 8034.843 7485.725 8238.493  8446.994    134
2      1       2021 7810.315 7261.198 8013.965  8222.466   346
3      1       2021 7585.788 7036.670 7789.438  7997.938    54364
4      1       2021 7361.260 6812.142 7564.910  7773.411    34546
5      1       2021 7136.733 6587.615 7340.382  7548.883     46436

jan-1 is data for firts week of jan. jan2- is the second week of jan and so on. What should i do to get desired result? Thanks for your valuable help

r


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source