首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用ggplot2绘制单变量持续期时间序列数据

用ggplot2绘制单变量持续期时间序列数据
EN

Stack Overflow用户
提问于 2021-08-25 08:31:25
回答 1查看 36关注 0票数 0

我有一份公司列表,上面有活动的开始日期和结束日期。我想绘制一个图形,在x轴上显示日期,在y轴上显示当前正在进行活动的公司的数量。目前我能想到的唯一方法是为每一天生成一个列,并给它一个1/0,表示该天是否在每个公司的开始日期和结束日期之间,然后对其进行重塑。有没有更有效的方法来生产这个?

以下是一些示例数据:

代码语言:javascript
运行
AI代码解释
复制
set.seed(123)
df <- data.frame(id = sample(100:500, 100, replace = F))
df$start <- sample(seq(as.Date('2020/01/01'), as.Date('2020/12/31'), by="day"), 100)
df$end <- df$start + sample(1:50, replace = T)
EN

回答 1

Stack Overflow用户

发布于 2021-08-25 08:58:51

这是另一个选择,尽管我怀疑它是否比你已经做的更有效率。它还制作了所有的日期,然后确定当天是否有任何特定的观察是“活动的”。

代码语言:javascript
运行
AI代码解释
复制
outdf <- tibble(
  date = seq(min(df$start), max(df$end), by=1), 
  num = rowSums(outer(date, 
                      1:nrow(df), 
                      function(x,y)x > df$start[y] & x < df$end[y]))
)

outdf
# # A tibble: 404 x 2
#   date         num
#   <date>     <dbl>
# 1 2020-01-05     0
# 2 2020-01-06     1
# 3 2020-01-07     1
# 4 2020-01-08     1
# 5 2020-01-09     1
# 6 2020-01-10     1
# 7 2020-01-11     2
# 8 2020-01-12     2
# 9 2020-01-13     2
# 10 2020-01-14     2
# # … with 394 more rows
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68926701

复制
相关文章

相似问题

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