首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在两个日期之间有几天的数据中创建变量?

如何在两个日期之间有几天的数据中创建变量?
EN

Stack Overflow用户
提问于 2022-07-28 12:14:43
回答 1查看 36关注 0票数 0

在data.frame中,我希望在两个日期之间创建尽可能多的变量。下面是我的例子。事先非常感谢!

代码语言:javascript
运行
复制
mydf <- data.frame(
  ident = c("a","b","c"),
  start = c("2023-01-01","2023-01-06","2023-01-24"),
  end = c("2023-01-03","2023-01-12","2023-01-30")
)

ident      start        end
1     a 2023-01-01 2023-01-03
2     b 2023-01-06 2023-01-12
3     c 2023-01-24 2023-01-30
代码语言:javascript
运行
复制
# Expected output
mydf <- data.frame(
  ident = c("a","b","c"),
  start = c("2023-01-01","2023-01-03","2023-01-24"),
  end = c("2023-01-03","2023-01-12","2023-01-30"),
  `Sunday 1 January` = c(1,0,0),
  `Monday 2 January` = c(1,0,0),
  `Tuesday 3 January` = c(1,1,0),
  `Wednesday 4 January` = c(0,1,0)
)
  ident      start        end Sunday.1.January Monday.2.January Tuesday.3.January Wednesday.4.January
1     a 2023-01-01 2023-01-03                1                1                 1                   0
2     b 2023-01-03 2023-01-12                0                0                 1                   1
3     c 2023-01-24 2023-01-30                0                0                 0                   0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 12:22:05

创建列名实际上是" data“的列通常是个坏主意,原因有几个;通常最好是以长格式处理数据,然后将其转换为仅用于呈现的”类似日期的列名“。但如果你真的需要,那么

代码语言:javascript
运行
复制
library(dplyr)
library(tidyr) # unnest, pivot_wider
mydf %>%
  mutate(
    z = 1L,                              # uses as the "value" later
    across(c(start,end), as.Date),       # because we need seq.Date
    dates = Map(seq.Date, start, end, list(by = "day"))
  ) %>%
  unnest(dates) %>%
  pivot_wider(
    c(ident, start, end), names_from = "dates",
    values_from = "z", values_fill = 0L)
# # A tibble: 3 x 20
#   ident start      end        `2023-01-01` `2023-01-02` `2023-01-03` `2023-01-06` `2023-01-07` `2023-01-08` `2023-01-09` `2023-01-10` `2023-01-11` `2023-01-12` `2023-01-24` `2023-01-25` `2023-01-26` `2023-01-27` `2023-01-28`
#   <chr> <date>     <date>            <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>        <int>
# 1 a     2023-01-01 2023-01-03            1            1            1            0            0            0            0            0            0            0            0            0            0            0            0
# 2 b     2023-01-06 2023-01-12            0            0            0            1            1            1            1            1            1            1            0            0            0            0            0
# 3 c     2023-01-24 2023-01-30            0            0            0            0            0            0            0            0            0            0            1            1            1            1            1
# # ... with 2 more variables: 2023-01-29 <int>, 2023-01-30 <int>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73152734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档