【问题标题】:Date specification in dataframe数据框中的日期规范
【发布时间】:2020-09-25 16:53:16
【问题描述】:

我有一个包含 3 个月观察值的数据集。每列对应一个特定日期,每一行对应一个特定区域。数据集的最后一列是“周总和”(总结过去 7 天该区域的值)。这是数据集的示例:

 2020-09-15 2020-09-16 2020-09-17 2020-09-18 2020-09-19 2020-09-20 2020-09-21 2020-09-22 2020-09-23 2020-09-24 week_sum
       1463       1619       1624       1664       1673       1690       1691       1714       1715       1738    11885
       4812       5003       5021       5033       5047       5061       5087       5124       5141       5165    35658
        629        809        809        824        830        835        838        848        851        857     5883

我正在尝试在 R 中创建一个函数,该函数允许用户指定特定日期范围,例如 2020-09-16: 2020-09-22,或者允许用户指定哪个星期或月份选择数据的函数来自,但我不太确定如何在 R 中执行此操作。有人可以帮忙吗?

【问题讨论】:

    标签: r function date


    【解决方案1】:

    试试这个内置功能。您必须设置数据框以及最小和最大日期。代码如下:

    #Function
    myfun <- function(x,mindate,maxdate)
    {
      #Filter names
      v1 <- as.Date(names(x))
      #Set filter
      v2 <- which(v1>=as.Date(mindate) & v1<=as.Date(maxdate))
      #Create filtered data
      y <- x[,v2]
      #Compute sum
      y$Sum <- rowSums(y)
      return(y)
    }
    #Apply
    myfun(x = df,mindate = "2020-09-16",maxdate = "2020-09-22")
    

    输出:

      2020-09-16 2020-09-17 2020-09-18 2020-09-19 2020-09-20 2020-09-21 2020-09-22   Sum
    1       1619       1624       1664       1673       1690       1691       1714 11675
    2       5003       5021       5033       5047       5061       5087       5124 35376
    3        809        809        824        830        835        838        848  5793
    

    使用的一些数据:

    #Data
    df <- structure(list(`2020-09-15` = c(1463L, 4812L, 629L), `2020-09-16` = c(1619L, 
    5003L, 809L), `2020-09-17` = c(1624L, 5021L, 809L), `2020-09-18` = c(1664L, 
    5033L, 824L), `2020-09-19` = c(1673L, 5047L, 830L), `2020-09-20` = c(1690L, 
    5061L, 835L), `2020-09-21` = c(1691L, 5087L, 838L), `2020-09-22` = c(1714L, 
    5124L, 848L), `2020-09-23` = c(1715L, 5141L, 851L), `2020-09-24` = c(1738L, 
    5165L, 857L)), row.names = c(NA, -3L), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 2018-10-24
      • 1970-01-01
      • 2021-12-17
      • 2020-08-01
      • 2020-07-22
      • 2020-07-09
      • 2015-09-28
      • 1970-01-01
      相关资源
      最近更新 更多