R语言 如何为多个连续范围的缺失时间戳添加行

ztmd8pv5  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个带有时间戳的多个类的数据框架。在某些情况下,时间戳丢失了,所以我想添加一个新的行,其中包含正确的时间戳和时间(每个间隔大约是6分钟,但不完全是6分钟)。但是,新行应该是最后一个时间+ 6分钟。下面是一个不正确的df的例子:

Class Time                 Timestamp
   <chr> <dttm>               <dbl>    
 1  1    2021-03-12 14:42:45  1
 2  1    2021-03-12 14:48:12  2
 3  1    2021-03-12 15:06:16  5
 4  1    2021-03-12 15:12:35  6

因此,校正后的df为:

Class Time                 Timestamp
   <chr> <dttm>               <dbl>    
 1  1    2021-03-12 14:42:45  1
 2  1    2021-03-12 14:48:12  2
 3  1    2021-03-12 14:54:12  3
 4  1    2021-03-12 15:00:12  4
 5  1    2021-03-12 15:06:16  5
 6  1    2021-03-12 15:12:35  6

另一个困难在于,有些类有多个时间戳范围,所以一个不正确的df的例子是:

Class Time                 Timestamp
   <chr> <dttm>               <dbl>    
 1  1    2021-03-12 14:42:45  1
 2  1    2021-03-12 14:48:12  2
 3  1    2021-03-12 14:54:12  3
 4  1    2021-03-12 15:06:16  5
 5  1    2021-04-19 12:06:12  1
 6  1    2021-04-19 12:12:56  2
 7  1    2021-04-19 12:18:32  3
 8  1    2021-04-19 12:30:21  5
 9  1    2021-04-19 12:36:08  6

你能帮我解决丢失时间戳的问题吗?

jgzswidk

jgzswidk1#

library(tidyverse)

df %>% 
  complete(Class, Time = full_seq(Time, as.numeric(minutes(6)))) %>% 
  mutate(across(Timestamp, ~ full_seq(na.omit(.x), 1)))

# A tibble: 6 × 3
  Class Time                Timestamp
  <dbl> <dttm>                  <dbl>
1     1 2021-03-12 14:42:00         1
2     1 2021-03-12 14:48:00         2
3     1 2021-03-12 14:54:00         3
4     1 2021-03-12 15:00:00         4
5     1 2021-03-12 15:06:00         5
6     1 2021-03-12 15:12:00         6

相关问题