Actual Output,如果一列日期(z)落在指定范围内,我试图求和。不幸的是,我的循环似乎无法启动,并且输出为空。
Sd <- as.Date('2017-01-01',tz = "GMT")
EndDate <- as.Date('2017-01-20',tz = "GMT")
Ed <- EndDate + 30
LTV1 <- while (Sd < Ed) {
Sd <- Sd + 1
LTV1 <- LTV %>% group_by(InstallationDate)%>% filter(z < Sd) %>%
summarize(Amount = sum(USAmount))
}
as.data.frame(LTV1)
向大家道歉。我对此很陌生。这是一个可重现的示例:
Sample <- as.data.frame(seq(as.Date("2017/01/01"), by = "day", length.out
= 15))
Sample$Amount <- c(10,5,3,4,8,65,89,47,74,95,85,63,32,45,32)
colnames(Sample)[1] <- "date"
Sd <- as.Date('2017-01-01',tz = "GMT")
EndDate <- as.Date('2017-01-5',tz = "GMT")
Ed <- EndDate + 3
Sample1 <- while (Sd < Ed) {
Sd <- Sd + 1
Sample1 <- Sample %>% group_by(date)%>% filter(date < Sd) %>%
summarize(Amount = sum(Amount))
}
as.data.frame(Sample1)
Desired Output will be:
Dates: Day 1 Day 2 Day 3 .......................
Amount: 25 54 89 .......................
答案 0 :(得分:0)
我想这就是你想要的:
LTV1 = LTV %>%
arrange(InstallationDate) %>%
group_by(InstallationDate) %>%
summarize(daily_amount = sum(USAmount)) %>%
ungroup() %>%
mutate(cumulative_amount = cumsum(daily_amount))
我相信cumulative_amount
列就是您要创建的内容-尽管您难以复制和共享输入数据,但很难说也无法测试。我也无法判断是否需要arrange
,group_by
和summarize
-如果按日期排序您的数据,则不需要arrange
。如果您的数据每天只有一行,则不需要分组和汇总。
答案 1 :(得分:-1)
您将LTV1
的结果分配给while
(为什么?),该结果始终为NULL。