r - 当范围变化时,按月从 df 中提取开始和结束日期

标签 r date parsing seq

我有一个大型数据集,其开始日期和结束日期有时在一个月内,但更常见的是跨度超过一个月或一年。最终,我想统计每个ID每个月的入住天数。

这里是示例数据:

ID = c(50:55)
ENTRY = as.Date(c("11/6/2011", "04/08/2012", "10/9/2012",
              "23/10/2012", "15/11/2012", "23/11/2012"), "%d/%m/%Y")
EXIT = as.Date(c("11/7/2011", "06/09/2012", "24/9/2012",
              "31/12/2012", "18/11/2012", "04/01/2013"), "%d/%m/%Y")
Occupancy <- data.frame(ID, ENTRY, EXIT)

ID      ENTRY       EXIT
50 2011-06-11 2011-07-11
51 2012-08-04 2012-09-06
52 2012-09-10 2012-09-24
53 2012-10-23 2012-12-31
54 2012-11-15 2012-11-18
55 2012-11-23 2013-01-04 

这就是我想要创建的:

ID  ENTRY   EXIT
50  6/11/2011   6/30/2011
50  7/1/2011    7/11/2011
51  8/4/2012    8/31/2012
51  9/1/2012    9/6/2012
:
55  11/23/2012  11/30/2012
55  12/1/2012   12/31/2012
55  1/1/2013    1/4/2013

如有任何建议,我们将不胜感激!

最佳答案

希望这有帮助!
它将为您提供最终结果 - 即每个 ID 每月的入住天数。

ID = c(50:55)
ENTRY = as.Date(c("11/6/2011", "04/08/2012", "10/9/2012",
                  "23/10/2012", "15/11/2012", "23/11/2012"), "%d/%m/%Y")
EXIT = as.Date(c("11/7/2011", "06/09/2012", "24/9/2012",
                 "31/12/2012", "18/11/2012", "04/01/2013"), "%d/%m/%Y")
Occupancy <- data.frame(ID, ENTRY, EXIT)

library(zoo)
library(dplyr)
monthList <- mapply(function(x,y) as.yearmon(seq(x,y, "day")), ENTRY, EXIT)
OccupancyDf <- monthList %>% lapply(table) %>% lapply(as.list) %>% lapply(data.frame) %>% rbind_all()
OccupancyDf$ID <- Occupancy$ID
OccupancyDf[is.na(OccupancyDf)] <- 0
OccupancyDf

输出是:

Jun.2011 Jul.2011 Aug.2012 Sep.2012 Oct.2012 Nov.2012 Dec.2012 Jan.2013    ID
      20       11        0        0        0        0        0        0    50
       0        0       28        6        0        0        0        0    51
       0        0        0       15        0        0        0        0    52
       0        0        0        0        9       30       31        0    53
       0        0        0        0        0        4        0        0    54
       0        0        0        0        0        8       31        4    55


如果它解决了您的问题,请不要忘记告诉我们:)

关于r - 当范围变化时,按月从 df 中提取开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443982/

相关文章:

java - 如何在java中解析后获取pl sql包的详细信息

r - knitr 中的特殊字符(cairoDevice 不起作用)

r - 在R中创建Shapefile

java - 将斜杠中的字符串解析为 JSON 时出错

postgresql - 使用postgresql将尼泊尔语日期转换为英语日期

mysql - 根据日期将排名编号分配给可能重复的行

java - 如何使用 DOM 解析器解析以下 xml?

r - R 中具有多个操作的 If 语句

r - 自动保存多页格子图

parsing - 如何将 "hh:mm:ss.SSS"的字符串解析为 DateTime