首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >围绕日期和重复值添加新的观测值

围绕日期和重复值添加新的观测值
EN

Stack Overflow用户
提问于 2020-10-07 00:22:54
回答 1查看 27关注 0票数 0

我有多个与日期相关的观测值,并希望在每个现有日期附近添加+-3天的新观测值,并复制这些天的值。

示例df:

代码语言:javascript
复制
library(lubridate)

Time <- c(as_date(17498), as_date(18498), as_date(18298))
Measurement <- c(11, 42, 28)
df <- data.frame(Time, Measurement)

目标df:

代码语言:javascript
复制
Time_edt <- c(as_date(17495),as_date(17496),as_date(17497),as_date(17498),as_date(17499),as_date(17500),as_date(17501), 
          as_date(18495),as_date(18496),as_date(18497),as_date(18498),as_date(18499),as_date(18500),as_date(18501), 
          as_date(18295),as_date(18296),as_date(18297),as_date(18298),as_date(18299),as_date(18300),as_date(1830))
Measurement_edt <- c(11,11,11,11,11,11,11,
                 42,42,42,42,42,42,42,
                 28,28,28,28,28,28,28)
df_edt <- data.frame(Time_edt, Measurement_edt)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 00:31:42

使用tidyverse (特别是purrr)可以做到这一点……

代码语言:javascript
复制
map_df(seq_len(nrow(df)),         #run through the rows. map_df outputs a dataframe
       ~tibble(Time = seq(df$Time[.]-3,       #construct df for that row
                          df$Time[.]+3, 1), 
               Measurement = df$Measurement[.]))

# A tibble: 21 x 2
   Time       Measurement
   <date>           <dbl>
 1 2017-11-25          11
 2 2017-11-26          11
 3 2017-11-27          11
 4 2017-11-28          11
 5 2017-11-29          11
 6 2017-11-30          11
 7 2017-12-01          11
 8 2020-08-21          42
 9 2020-08-22          42
10 2020-08-23          42
# ... with 11 more rows
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64229941

复制
相关文章

相似问题

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