当前位置: 首页 > 知识库问答 >
问题:

如何为数据帧中的每一行指定日期范围

董良策
2023-03-14

我有一个表格,它给了我一个国家每年的gpi得分。

gpi_year gpi_rank   gpi_country      gpi_score
2018        1       Iceland          1.096
2018        2       New Zealand      1.192
2018        3       Austria          1.274
.
.
.

2018        161     South Sudan      3.508
2018        162     Afghanistan      3.585
2018        163     Syria            3.6
gpi_year  gpi_rank  gpi_country  gpi_score  date
2018        1       Iceland      1.096      01-01-2018
2018        1       Iceland      1.096      02-01-2018
2018        1       Iceland      1.096      03-01-2018
.
.
.
.
2018        1       Iceland     1.096       29-12-2018
2018        1       Iceland     1.096       30-12-2018
2018        1       Iceland     1.096       31-12-2018
2018        2       New Zealand 1.096       01-01-2018
2018        2       New Zealand 1.096       02-01-2018
2018        2       New Zealand 1.096       03-01-2018
.
.
.
.
2018        2       New Zealand 1.096       29-12-2018
2018        2       New Zealand 1.096       30-12-2018
2018        2       New Zealand 1.096       31-12-2018

共有1个答案

陶富
2023-03-14

data.table与人工数据帧一起使用:

library(data.table)

df <- data.frame("gpi_year" = 2018, "gpi_rank" = 1, "gpi_country" = "Iceland",
                 "gpi_score" = 1.096)

df <- setDT(df)[, .(gpi_rank = gpi_rank, gpi_country = gpi_country, gpi_score = gpi_score,
      date = seq(as.Date(paste0(gpi_year, "-01-01")),
                        as.Date(paste0(gpi_year, "-12-31")), by = "day"),
      gpi_year = gpi_year), by = 1:nrow(df)][, nrow := NULL]

输出:

     gpi_rank gpi_country gpi_score       date gpi_year
  1:        1     Iceland     1.096 2018-01-01     2018
  2:        1     Iceland     1.096 2018-01-02     2018
  3:        1     Iceland     1.096 2018-01-03     2018
  4:        1     Iceland     1.096 2018-01-04     2018
  5:        1     Iceland     1.096 2018-01-05     2018
 ---                                                   
361:        1     Iceland     1.096 2018-12-27     2018
362:        1     Iceland     1.096 2018-12-28     2018
363:        1     Iceland     1.096 2018-12-29     2018
364:        1     Iceland     1.096 2018-12-30     2018
365:        1     Iceland     1.096 2018-12-31     2018
 类似资料:
  • 我正在尝试查询adwords api(v201603),并且正在使用/扩展提供的Java示例。 我遇到的问题是,无法为CLICK_PERFORMANCE_REPORT报表指定下载报表数据的特定日期。此报表仅限于一次返回一天的数据(最多为过去90天)。 非常感谢您的帮助,谢谢您的帮助

  • 问题内容: 如果我有一个像这样的桌子 我如何才能像这样退货… 我正在考虑做的一件事是让另一个具有全部日期的表,然后使用和将仅具有日期的表加入到上述表中,但这似乎有点笨拙,因为除了重复的日期外,别无其他维护该表的必要性。 在某些情况下,我没有数据范围,而只有一个日期,基本上看起来像我的第一个示例,但没有。该由下一行的“作为”日暗示(即结束日期应该是下一行的-1)。为此,我有一个“解决方案”,它使用r

  • 问题内容: 我正在尝试建立一个SQL查询,该查询将为我提供具有相同价格的日期的日期范围。如果价格出现突破,我希望能在新的行中看到它。即使一个月中的某个时间有相同的价格,但如果价格介于两者之间的某个时间有变化,我希望将其视为具有特定日期范围的两个单独的行。 样本数据: 所需结果: 问题答案: 非关系解决方案 我认为没有其他答案是正确的。 不会工作 使用会强制将数据放入物理的“记录归档系统”结构中,然

  • 我面临着许多困难。 1)虽然在演讲和历史数据中都有日期信息,但在第一个数据中,我有每个条目的具体日期,在第二个数据中有一个日期范围。理想情况下,我希望能够合并,以便每个演讲条目都与演讲者(姓名)和演讲日期所属的历史条目匹配。 2)期望的输出是有一个data.frame或data.table,其行等于演讲data.frame中的观察值,以及名称、日期和每个角色的列(它们将由值填充)。然而,某些角色在

  • 我有大量的日期范围,如下所示,示例如下。我需要计算每个实际日历年有多少个月。因此,这将分解为: 合同:123 开始日期:2016年11月1日 结束日期:2018年6月1日 2016年11月1日 合同:456 开始日期:2017年5月31日 结束日期:2019年6月1日 2017年5月31日 有人知道解决这个问题的方法吗?每个合同都有一行,都在同一个表中,开始和结束日期列在同一行中。 我原本打算沿着

  • 我使用的是jquery数据表。我在做日期范围筛选。当我选择“最小日期”和“最大日期”时,结果是数据表上没有筛选数据。我用了剧本 null null null null 日期格式为YYYY-MM-DD。每次我用日期范围搜索时,结果不会出现在数据表中。请帮帮我,我哪里做错了。谢谢。