【问题标题】:Cumulate rows according a date value for each class [duplicate]根据每个类的日期值累积行[重复]
【发布时间】:2019-06-17 16:31:25
【问题描述】:

我有一些数据,其中包含计数值(包含整数)、日期列和一个标识列(包含 10 个不同的值)。 我想知道标识符何时达到计数值(如 100)。出于这个原因,我想为每个标识符累积我的计数值(我不知道如何在 R 中执行此第一部分,我使用了 Data.table)并且在我将做一个条件之后(当我的 commulate 列是 > 100,我会放 1 else 0) 和一个选择。

对于累积部分,我不知道如何根据列值来做。

#◘ Exemple of data
data <-data.frame(identifiant = c("A","A","A","A","A","B","B","B"),
                  date = as.Date(c("01/01/2018","02/01/2018","03/01/2018","04/01/2018","08/01/2018","03/01/2018","04/01/2018","08/01/2018"),format = '%d/%m/%Y'),
                  count = c(25,39,50,41,10,3,95,2))



# I would like a cummulate column like this

identifiant date    count   Cummulate
       A    01/01/2018  25  25
       A    02/01/2018  39  64
       A    03/01/2018  50  114
       A    04/01/2018  41  155
       A    08/01/2018  10  165
       B    03/01/2018  3   3
       B    04/01/2018  95  98
       B    08/01/2018  2   100

感谢您的提前

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以按'identifiant'分组,得到'count'的累计和

    library(dplyr)
    data %>% 
       group_by(identifiant) %>% 
       mutate(Cummulate = cumsum(count))
    # A tibble: 8 x 4
    # Groups:   identifiant [2]
    #  identifiant date       count Cummulate
    #  <fct>       <date>     <dbl>     <dbl>
    #1 A           2018-01-01    25        25
    #2 A           2018-01-02    39        64
    #3 A           2018-01-03    50       114
    #4 A           2018-01-04    41       155
    #5 A           2018-01-08    10       165
    #6 B           2018-01-03     3         3
    #7 B           2018-01-04    95        98
    #8 B           2018-01-08     2       100
    

    【讨论】:

    • 这么简单!非常感谢您的快速回答!
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多