【问题标题】:Combining timed data from different sources结合来自不同来源的定时数据
【发布时间】:2020-09-25 02:56:20
【问题描述】:

我有一个如下所示的数据集(时间以秒为单位):

+-------+--------------------+------------------+---------+
| Index | Start.Elapsed.Time | End.Elapsed.Time | Outcome |  
+-------+--------------------+------------------+---------+
|     1 |                0.0 |              2.5 |       0 |  
|     2 |                2.5 |              5.0 |       0 |  
|     3 |                3.1 |              5.4 |       1 |  
|     4 |                5.0 |              7.5 |       0 |  
|     5 |                7.5 |               10 |       0 |  
+-------+--------------------+------------------+---------+

如您所见,定时数据大多以 2.5 秒为间隔进行分段。但是,有些条目(例如:3)的时间间隔是不规则数字,对于所有这些条目,结果都是 1。我想删除这些条目,但在结果变量中添加一个“1”条目重叠的均匀分段数据行(即:2 和 4)。我希望我的输出表如下所示:

+-------+--------------------+------------------+---------+
| Index | Start.Elapsed.Time | End.Elapsed.Time | Outcome |  
+-------+--------------------+------------------+---------+
|     1 |                0.0 |              2.5 |       0 |  
|     2 |                2.5 |              5.0 |       1 |  
|     4 |                5.0 |              7.5 |       1 |  
|     5 |                7.5 |               10 |       0 |  
+-------+--------------------+------------------+---------+

我不确定如何解决这个问题。任何帮助将不胜感激。谢谢

【问题讨论】:

  • 编辑:另外,我在 R 工作

标签: r time


【解决方案1】:

我们可以通过检查'Start.Elapsed.Time'是否小于上一行的'End.Elapsed.Time'来更新'Outcome',lagfilter 有差异的行“时间”列等于 2.5

library(dplyr)
df1 %>% 
    mutate(Outcome = +(Start.Elapsed.Time < lag(End.Elapsed.Time, 
          default = first(Start.Elapsed.Time))| 
       as.logical(lead(Outcome, default = 0)))) %>%
    filter(round(End.Elapsed.Time - Start.Elapsed.Time, 1) == 2.5)
#  Index Start.Elapsed.Time End.Elapsed.Time Outcome
#1     1                0.0              2.5       0
#2     2                2.5              5.0       1
#3     4                5.0              7.5       1
#4     5                7.5             10.0       0

数据

df1 <- structure(list(Index = 1:5, Start.Elapsed.Time = c(0, 2.5, 3.1, 
5, 7.5), End.Elapsed.Time = c(2.5, 5, 5.4, 7.5, 10), Outcome = c(0, 
0, 1, 0, 0)), class = "data.frame", row.names = c(NA, -5L))

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多