R:根据24小时时间框架分配组

时间:2018-05-30 17:28:55

标签: r datetime grouping data-manipulation

我有这个数据集:

    test <- data.frame("Event" = c("A", "B", "C","D","E"),"startTime" = c("2017-08-01 00:37:27", "2017-08-01 00:44:32", "2017-08-01 23:30:00","2017-08-01 23:55:47", "2017-08-02 01:00:00" ), "endTime" = c("2017-08-01 20:13:13", "2017-08-01 21:30:45", "2017-08-02 09:00:00","2017-08-01 23:56:47", "2017-08-02 04:18:38"), "Bin" = c(1,1,2,1,2))

我想创建一个列Bin,您可以根据startTime和endTime的24小时帧将值1分配给n。例如,事件A和B属于Bin(组)#1,因为它们都在2017-08-01开始并在同一天结束。但是,事件C属于bin#2,因为它在第二天而不是2017-08-01结束。事件D属于bin#2,因为它在2017-08-02开始和结束,依此类推。

我不知道如何根据此逻辑正确分配组值。任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

这有效:

CREATE PROCEDURE my_sp AS
    IF EXISTS (SELECT * FROM NetNewCustomers) DROP TABLE NetNewCustomers;

WITH NetNewCustomers AS
    (
        SELECT
            CustomerId
            , DateFirstPurchase
            , PurchaseDate
            , PurchaseId
        FROM 
            AllCustomerPurchases
        WHERE
            PurchaseDate = DateFirstPurchase


    )


    SELECT 
        * 
    INTO 
        [GuitarMarketing].[dbo].[NetNewCustomers] 
    FROM 
    (
        SELECT
             * 
        FROM 
            NetNewCustomers 
    ) 
        AS CTE

  END 

答案 1 :(得分:0)

这里,bin2是从endTime的最小值开始的天数。

test %>%
    mutate(bin2 = as.integer(as.Date(endTime) - min(as.Date(endTime))) + 1)