在R中如何找到值> 0的最早日期

时间:2020-03-28 18:20:41

标签: r date count find

我有一个包含许多国家,日期和值的数据集。我需要找到每个国家最早的正值(> 0)最早的一天。在下面的意大利示例中,日期2020-03-24的Day_Count应该为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

有人可以帮助我解决这个问题吗? 预先感谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试:

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))))

答案 1 :(得分:1)

我们可以使用dplyr

library(dplyr)
df %>%
     mutate(Day_Count = rev(cumsum(rev(Value) != 0)))
相关问题