首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他列中的某些值添加具有升序编号的列

根据其他列中的某些值添加具有升序编号的列
EN

Stack Overflow用户
提问于 2021-07-06 20:18:25
回答 1查看 133关注 0票数 0

我有一个包含“日期”、"Snow_depth“和"hydro_year”列的dataframe。"Snow_depth"-column包含0-150的值。为了识别连续雪日的数量和长度,即“雪深”-values大于0的天数,我尝试添加一个列,其中包含从第一个“雪深”-value大于0开始的升序数字,并以“雪深度”-column+零/NAs的下一个0结尾,每一行的“雪深”-value为0。一旦我得到了这个,我就会计算新列的"2"-values数(因为2天是雪期的最小值),以检测周期的数量,并过滤每个水文年的最高和最低值,以检测最大长度和最小长度。

有人知道如何创建我描述的那个专栏吗?

我需要的是这样的:

Snow_depth: 0,0,5,7,8,4,0,0,6,5,8,9,5,6,0,8,6.

New_column: 0,0,1,2,3,4,0,0,1,2,3,4,5,6,0,1,2.

任何帮助都是非常感谢的!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-06 21:18:03

您可以在这里使用purrr:accumulate()。首先使用snow_depth !=0创建逻辑向量,而不是使用if_else进行调用累积。

代码语言:javascript
复制
library(purrr)
library(dplyr)

df%>%mutate(consecutive_days=accumulate(snow_depth!=0, ~if_else(.y!=0, .x+1, 0)))

   snow_depth new_column consecutive_days
1           0          0                0
2           0          0                0
3           5          1                1
4           7          2                2
5           8          3                3
6           4          4                4
7           0          0                0
8           0          0                0
9           6          1                1
10          5          2                2
11          8          3                3
12          9          4                4
13          5          5                5
14          6          6                6
15          0          0                0
16          8          1                1
17          6          2                2

数据

代码语言:javascript
复制
df<-data.frame(snow_depth=c(0, 0, 5, 7, 8, 4, 0, 0, 6, 5, 8, 9, 5, 6, 0, 8, 6),
           new_column=c(0, 0, 1, 2, 3, 4, 0, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68276939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档