Tzhu

  • 2019年11月7日
  • 注册于 2019年11月5日
  • 如果我没理解错的话,这不就是个 seq + mapply + table 的问题嘛……

    # 构建数据:
    date_df <- data.frame(start = c("06-01","06-02","06-03","06-04","06-04"), 
                          duration = c(4,3,1,1,0))
    # 识别日期:
    date_df$ystart <- as.Date(paste0('2019-', date_df$start))
    # 生成所有日期:
    date_ls <- mapply(function(x1, x2) format(seq(from = x1, length.out = x2, by = 1), '%m-%d'), 
                      date_df$ystart, date_df$duration)
    # 统计频次:
    table(unlist(date_ls))
    • 如何将数值转换成频次并求和

      现在有一列时间序列数据 4,3,1,1,0

      Date <- c("06-01","06-02","06-03","06-04","06-04")
      Last_day <- c(4,3,1,1,0)
      Data1 <- data.frame(Date,Last_day)
      Data1
         Date Last_day
      1 06-01        4
      2 06-02        3
      3 06-03        1
      4 06-04        1
      5 06-04        0

      数字代表从该天开始持续的天数
      我想最后求得每天出现的频次是多少

      Count_day <- c(1,2,3,3,0)
      Data2 <- data.frame(Date,Last_day,Count_day)
      Data2
         Date Last_day Count_day
      1 06-01        4         1
      2 06-02        3         2
      3 06-03        1         3
      4 06-04        1         3
      5 06-04        0         0

      我想的逻辑是
      4,3,1,1,0=
      1,1,1,1,0 +
      0,1,1,1,0 +
      0,0,1,0,0 +
      0,0,0,1,0 +
      0,0,0,0,0 =
      1,2,3,3,0.
      但是不知如何实现。