【问题标题】:selecting a value in one column based on minimum and maximum timestamp in R data table根据 R 数据表中的最小和最大时间戳在一列中选择一个值
【发布时间】:2020-06-10 12:17:58
【问题描述】:

我有一个包含时间戳、状态、类型和值列的 R 数据表

当timestamp为min(一天的第一个),status为1,type为A时,我需要选择值。

我试过了:min(dt$timestamp[dt$status ==1 & dt$type == 'A']$value)

数据表:

timestamp   status  type    value
01-02-2020 08:09:10 1   A   2
01-02-2020 08:19:34 0   A   3
01-02-2020 08:34:10 0   A   4
01-02-2020 09:09:33 0   B   5
01-02-2020 10:09:10 1   B   2
02-02-2020 05:06:11 1   B   3
02-02-2020 08:09:10 1   A   4
02-02-2020 09:02:11 1   A   4
02-02-2020 10:29:15 0   A   6

预期输出:如果我想要日期01-02-2020,那么当status == 0type == A01-02-2020 08:19:34minimum timestamp。对应的值为3

如果我想约会02-02-2020,那么当status == 0type == A02-02-2020 10:29:15minimum timestamp。对应的值为6

我应该能够提供所需的日期。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    您可以先创建一个date 列并根据条件过滤值。

    library(data.table)
    
    want_date <- as.Date('2020-02-02')
    setDT(df)[, date := as.Date(timestamp, "%d-%m-%Y %T")]
    df[date == want_date,value[timestamp == min(timestamp[status == 0 & type == "A"])]]
    #[1] 6
    

    数据

    df <- structure(list(timestamp = c("01-02-202008:09:10", "01-02-202008:19:34", 
    "01-02-202008:34:10", "01-02-202009:09:33", "01-02-202010:09:10", 
    "02-02-202005:06:11", "02-02-202008:09:10", "02-02-202009:02:11", 
    "02-02-202010:29:15"), status = c(1L, 0L, 0L, 0L, 1L, 1L, 1L, 
    1L, 0L), type = c("A", "A", "A", "B", "B", "B", "A", "A", "A"), 
    value = c(2L, 3L, 4L, 5L, 2L, 3L, 4L, 4L, 6L)), class = "data.frame",
    row.names = c(NA, -9L))
    

    【讨论】:

    • 我只需要特定日期
    • 我应该给df[, .SD[timestamp == min(timestamp[status == 0 &amp; type == "A"])], date == '01-02-2020']
    • 当时间戳为 min 时,我需要来自 value 列的数据
    • 实际上我只想将值作为输出而不是表格。我想在其他表操作中使用这个值
    • @VJD 我更新了用于此答案的数据。您可以使用这些数据检查它是否适合您吗?如果使用此数据确实有效,但不适用于您的真实数据,您是否可以比较并验证这两个数据之间的区别是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 2012-05-29
    • 2016-06-10
    • 1970-01-01
    • 2014-10-05
    • 2011-01-27
    • 1970-01-01
    • 2015-11-28
    相关资源
    最近更新 更多