【问题标题】:In R how to find the earliest day with a value >0在R中如何找到值> 0的最早日期
【发布时间】:2020-07-09 07:36:28
【问题描述】:

我有一个包含许多国家、日期和值的数据集。我需要找到每个国家/地区第一个正值(> 0)的最早日期。在以下示例中,意大利的 Day_Count 对于日期 2020-03-24 应为 1,并且应继续向上增加。

     Country.Region       Date Value
9638          Italy 2020-03-27 150
9639          Italy 2020-03-26 120
9640          Italy 2020-03-25 110
9641          Italy 2020-03-24 80
9642          Italy 2020-03-23 0
9643          Italy 2020-03-22 0

所以我的最终数据应该是这样的

     Country.Region       Date Value  Day_Count
9638          Italy 2020-03-27 150    4
9639          Italy 2020-03-26 120    3
9640          Italy 2020-03-25 110    2
9641          Italy 2020-03-24 80     1
9642          Italy 2020-03-23 0      0
9643          Italy 2020-03-22 0      0

有人能帮我解决这个问题吗? 提前致谢。

【问题讨论】:

    标签: r date count find


    【解决方案1】:

    你可以试试:

    transform(df, Day_Count = rev(cumsum(rev(Value) != 0)))
    

    输出:

      Country.Region       Date Value Day_Count
    1          Italy 2020-03-27   150         4
    2          Italy 2020-03-26   120         3
    3          Italy 2020-03-25   110         2
    4          Italy 2020-03-24    80         1
    5          Italy 2020-03-23     0         0
    6          Italy 2020-03-22     0         0
    

    或者针对不同的国家:

    transform(df, Day_Count = ave(Value, Country.Region, FUN = function(x) rev(cumsum(rev(x) != 0))))
    

    【讨论】:

      【解决方案2】:

      我们可以使用dplyr

      library(dplyr)
      df %>%
           mutate(Day_Count = rev(cumsum(rev(Value) != 0)))
      

      【讨论】:

        猜你喜欢
        • 2021-08-16
        • 2011-05-22
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 2016-12-30
        • 2012-08-18
        • 1970-01-01
        • 2020-02-07
        相关资源
        最近更新 更多