我已经创建了一个算法来创建变量DayOfWeek
(星期一、星期二等)。当我设计它的时候,它总是以某种方式错过一天。此外,在策划时,日子不正常(它显示:星期二,星期五,星期日等)。变量InvoiceDate
类似于12/1/10 8:26
。我怎样才能解决这些问题?
data$DayOfWeek <- c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"
, "Saturday","Friday")[as.POSIXlt(as.Date(data$InvoiceDate,"%d/%m/%Y"))$wday + 1]
每天销售时间序列
timeseriesperday <- split(data$DayOfWeek, data$InvoiceNo) # Convert data in the list
timeseriesperday <- as(timeseriesperday,"transactions") # Convert dates to transcriptions
itemFrequencyPlot(timeseriesperday,type="absolute", main="Sales time series per day",
xlab="Day of the Week", ylab="Amount of Sales")
发布于 2016-11-11 15:33:16
您是否尝试过将DayOfWeek
转换为具有所需级别的factor
?
listOfWeekdays <- c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday")
data$DayOfWeek <- listOfWeekdays[as.POSIXlt(as.Date(data$InvoiceDate,"%d/%m/%y"))$wday + 1]
data$DayOfWeek <- factor(data$DayOfWeek, levels = listOfWeekdays)
正如@42所指出的,格式字符串需要在2位数的年份中使用小写的%y
(例如10
),而大写的%Y
则需要4位数的年份(例如2010
)。
发布于 2016-11-11 15:48:24
你不必自己创建工作日的清单。我建议签出润滑油包装,您可以用它在时间戳上调用函数wday()
来返回当天。
如果invoicedate的示例是周一,wday(invoicedate)
将返回2
,而wday(invoicedate, label = TRUE
将返回Mon
(因为这个包的周从星期日开始:Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat
)。
https://stackoverflow.com/questions/40557683
复制相似问题