R 在每个产品和商店的数据框中插入缺失的日期
这是我的数据文件R 在每个产品和商店的数据框中插入缺失的日期,r,R,这是我的数据文件 Location.Name Item.Description Sort.In.Date OrderedQty HC Overijse Pro B 731 7/1/2015 2 HC Overijse Pro B 731 8/3/2015 2 HC Overijse Pro B 931 8/27/2015 1 HC Overijse
Location.Name Item.Description Sort.In.Date OrderedQty
HC Overijse Pro B 731 7/1/2015 2
HC Overijse Pro B 731 8/3/2015 2
HC Overijse Pro B 931 8/27/2015 1
HC Overijse Pro B 933 6/24/2015 2
HC Overijse Pro B 933 7/22/2015 2
HC Overijse Pro B 933 7/29/2015 1
HC Overijse Pro R 731 6/16/2015 2
HC Overijse Pro R 731 8/3/2015 2
Hannah Thieuw Pro B 933 7/14/2015 2
Hannah Thieuw Pro R 731 8/14/2015 2
HC Asse Pro B 731 6/12/2015 2
HC Asse Pro B 931 6/12/2015 2
HC Asse Pro B 933 6/4/2015 2
HC Asse Pro R 731 6/8/2015 2
HC Asse Pro R 731 6/10/2015 2
HC Asse Pro R 731 6/17/2015 2
HC Asse Pro R 731 7/9/2015 2
HC Asse Pro R 731 7/27/2015 2
HC Asse Pro R 732 6/16/2015 2
我的问题是,您如何计算2015年6月1日->2015年8月31日(不含周末)期间每天/每周的平均订购量。每个位置和每个产品。所以我必须找到一种方法,在数据集中插入零来计算平均值。(这将是一个小值)。我还需要展台开发。我使用此代码计算每个订单的平均订购数量以及两个订单之间的时间
fe <- fe[order(fe$Item.Description,fe$Location.Name,fe$Sort.In.Date), ]
sfe<-dlply(fe, .(fe$Item.Description,fe$Location.Name))
fe$DayBetween <- unlist(sapply(seq_along(sfe), function(x) diff(as.Date(c(NA, as.Date(sfe[[x]][,3] , format="%d/%m/%Y") ))) ))
FilteredExport<-fe
remove(fe)
results<-ddply(FilteredExport, .(Location.Code,Location.Name,Item.Description),summarize,
N=length(Item.Description), AverageQty = mean(OrderedQty),sdAverageQty=sd(OrderedQty) , AvgTimeBetweenOrder = mean(DayBetween,na.rm=TRUE),sdAvgTimeBetweenOrder=sd(DayBetween,na.rm=TRUE))
为什么用零填充?只需将订购数量之和除以该期间的天数/周数即可。那么,我如何计算标准偏差?好的,我确实可以自己计算,但它们是使用mean和sd等函数的一种方法吗?就像Bramtayl的回答一样,你能解释一下%>%的作用吗?我从未见过类似的东西,我也尝试过使用你的代码,但我找不到函数排列方式。我应该加载哪个包才能使用此功能?
arrange\u by
应该是arrange
。%%>%%
是一个“链接”操作符,允许您一个接一个地运行函数,而无需保存到中间的对象。下一个函数只获取上一个函数的输出。有关更多信息,请参阅,特别是有关链接的部分。谢谢,这非常有用。但是我仍然希望使用函数mean和sd来计算orderedQty为0的所有日期的平均值和标准偏差,因此不包括在数据集中
structure(list(Location.Name = c("HC Overijse", "HC Overijse",
"HC Overijse", "HC Overijse", "HC Overijse", "HC Overijse", "HC Overijse",
"HC Overijse", "Hannah Thieuw", "Hannah Thieuw", "HC Asse", "HC Asse",
"HC Asse", "HC Asse", "HC Asse", "HC Asse", "HC Asse", "HC Asse",
"HC Asse"), Item.Description = c("Pro B 731", "Pro B 731", "Pro B 931",
"Pro B 933", "Pro B 933", "Pro B 933", "Pro R 731", "Pro R 731",
"Pro B 933", "Pro R 731", "Pro B 731", "Pro B 931", "Pro B 933",
"Pro R 731", "Pro R 731", "Pro R 731", "Pro R 731", "Pro R 731",
"Pro R 732"), Sort.In.Date = structure(c(16617, 16650, 16674,
16610, 16638, 16645, 16602, 16650, 16630, 16661, 16598, 16598,
16590, 16594, 16596, 16603, 16625, 16643, 16602), class = "Date"),
OrderedQty = c(2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L)), .Names = c("Location.Name",
"Item.Description", "Sort.In.Date", "OrderedQty"), row.names = c(NA,
-19L), class = "data.frame")
library(plyr)
library(dplyr)
library(zoo)
df %>%
mutate(date = Sort.In.Date %>% as.Date,
day_of_week = date %>% format("%w") %>% as.numeric) %>%
full_join(data_frame(date = as.Date("6/1/2015"):as.Date("8/31/2015") %>% as.Date) ) %>%
mutate(OrderedQty.expand = OrderedQty %>% mapvalues(NA, 0) ) %>%
filter(date %>% between(as.Date("6/1/2015"), as.Date("8/31/2015") ) &
day_of_week %>% between(1, 5) ) %>%
group_by(Location.Name, Item.Description) %>%
arrange(date) %>%
summarize(OrderedQty.mean = mean(OrderedQty.expand),
OrderedQty.sd = sd(OrderedQty.expand),
average_interval = date %>% diff %>% mean)