首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于与标记行的时间差标记行

基于与标记行的时间差标记行
EN

Stack Overflow用户
提问于 2020-10-13 08:37:52
回答 1查看 26关注 0票数 1

我正在尝试比较不同的趋势,因为它们与同一类型的事件相关。我已经标记了该事件,并将其视为时间0。每行的时间戳增加1秒。以下是一些示例数据:

代码语言:javascript
运行
复制
structure(list(timestamp = structure(c(1589359698, 1589359699, 
1589359700, 1589359701, 1589359702, 1589359703, 1589359704, 1589359705, 
1589359706, 1589359707, 1589359708, 1589359709, 1589359710, 1589359711, 
1589359712, 1589359713, 1589359714, 1589359715, 1589359716, 1589359717, 
1589359718, 1597392790, 1597392791, 1597392792, 1597392793, 1597392794, 
1597392795, 1597392796, 1597392797, 1597392798, 1597392799, 1597392800
), tzone = "UTC", class = c("POSIXct", "POSIXt")), time_from_event= c(NA, 
NA, NA, NA, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, NA, NA, NA), measurement = c(11.27387375, 
11.27387375, 11.27387375, 11.27387375, 11.27387375, 11.27387375, 
11.27387375, 11.27387375, 11.3522525, 11.27387375, 11.27387375, 
11.27387375, 11.27387375, 11.27387375, 11.41321375, 11.3174175, 
11.3174175, 11.3174175, 11.195495, 11.30870875, 11.2129125, 11.3, 
11.404505, 11.23903875, 11.23903875, 11.23903875, 11.3522525, 
11.27387375, 11.27387375, 11.27387375, 11.27387375, 11.27387375
)), row.names = c(NA, -32L), class = c("tbl_df", "tbl", "data.frame"
))

事件之前的所有内容都应标记为递增的负数,即事件前1s的读数应为-1,事件前2s的读数应为-2,依此类推。

事件之后的所有内容都应该用递增的数字进行标记,即事件后1s为1,事件后2s为2,依此类推。

这两个不同的日子被单独分组。最终结果如下所示,其中每天都有标记为事件前后的行:

代码语言:javascript
运行
复制
timestamp            | time_from_event | reading
--------------------------------------------------
2020-05-13 08:48:18  |        -5       |  11.27387      
2020-05-13 08:48:19  |        -4       |  11.27387      
2020-05-13 08:48:20  |        -3       |  11.27387      
2020-05-13 08:48:21  |        -2       |  11.27387      
2020-05-13 08:48:22  |        -1       |  11.27387      
2020-05-13 08:48:23  |         0       |  11.27387      
2020-05-13 08:48:24  |         1       |  11.27387      
2020-05-13 08:48:25  |         2       |  11.27387      
2020-05-13 08:48:26  |         3       |  11.35225      
2020-05-13 08:48:27  |         4       |  11.27387  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 08:41:24

按时间戳转换后的‘Date’分组,取时间戳与'time_from_event‘中'0’值的位置索引之间的差值

代码语言:javascript
运行
复制
library(dplyr)
df1 %>%
    group_by(day = as.Date(timestamp)) %>%
    mutate(time_new = row_number() - match(0, time_from_event)) %>%
    ungroup

-output

代码语言:javascript
运行
复制
# A tibble: 32 x 5
#   timestamp           time_from_event measurement day        time_new
#   <dttm>                        <dbl>       <dbl> <date>        <int>
# 1 2020-05-13 08:48:18              NA        11.3 2020-05-13       -5
# 2 2020-05-13 08:48:19              NA        11.3 2020-05-13       -4
# 3 2020-05-13 08:48:20              NA        11.3 2020-05-13       -3
# 4 2020-05-13 08:48:21              NA        11.3 2020-05-13       -2
# 5 2020-05-13 08:48:22              NA        11.3 2020-05-13       -1
# 6 2020-05-13 08:48:23               0        11.3 2020-05-13        0
# 7 2020-05-13 08:48:24              NA        11.3 2020-05-13        1
# 8 2020-05-13 08:48:25              NA        11.3 2020-05-13        2
# 9 2020-05-13 08:48:26              NA        11.4 2020-05-13        3
#10 2020-05-13 08:48:27              NA        11.3 2020-05-13        4
# … with 22 more rows
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64326917

复制
相关文章

相似问题

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