【问题标题】:Sequence a group of dates in R在R中对一组日期进行排序
【发布时间】:2020-12-31 18:56:29
【问题描述】:

我希望生成一些整洁的数据。

每天观察 26 家公司,为期 10 天。 每天记录一个值。

第一天是:2020/1/1

如何创建日期列表,以便日期框架的日期列的前 26 行是“2020/1/1”(年、月、日),接下来的 26 行是“2020/1 /2" 等

这是没有日期列的数据框:

library(tidyverse)

set.seed(33)

date_chunk <- rep(as.Date("2020/1/1"), 26)

# Tidy data. 10 sequential days starting 2020/1/1/
df <- tibble(
  company = rep(letters, 10),
  value = sample(0:5, 260, replace = TRUE),
  color = "grey"
)

【问题讨论】:

    标签: r


    【解决方案1】:

    对于每个company,我们可以将row_number() 添加到first date_chunk 以获得递增的日期序列。

    library(dplyr)
    
    df %>% 
      group_by(company) %>%
      mutate(date = first(date_chunk) + row_number() - 1)
    

    【讨论】:

    • 但我需要为每 26 行的块增加一天的日期。
    • 是的,已更正。为什么同一日期重复了 26 次?
    • 我正在模拟 Tidy 数据,其中公司和日期是列标题。因此,如果每天观察到许多公司,则日期会重复。它比人类友好更友好。
    • 我认为你落后了。公司“z”永远不会得到 2020-01-01。
    • 你是对的。但是,现在我认为这应该在每个公司的基础上完成,而不是每 26 行重复一次日期。因此,稍后如果公司数量增加/减少,您无需计算数据中存在多少公司并相应地重复行。我已经据此更新了答案。
    【解决方案2】:

    你可以试试这个

    rep(seq(as.Date("2020-01-01"),as.Date("2020-01-10"),1),each=26)
    

    这将返回从 2020-01-01 到 2020-01-10 的日期列表,其中每个日期将重复 26 次

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2012-06-26
      • 2015-06-28
      相关资源
      最近更新 更多