我有一个包含许多国家,日期和值的数据集。我需要找到每个国家最早的正值(> 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
有人可以帮我解决这个问题吗?提前致谢。
您可以尝试:
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))))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句