我正在尝试评估给定数据集中的干咒数。
以下是数据示例 (沉淀是指每日总降水量)
date precip index
1976-01-15 11.4 0
1976-01-16 10.3 0
1976-01-17 3.2 0
1976-01-18 0.0 1
1976-01-19 1.2 0
1976-01-20 1.7 0
1976-01-21 3.1 0
1976-01-22 9.2 0
1976-01-23 4.6 0
1976-01-24 1.9 0
1976-01-25 0.0 1
1976-01-26 0.1 1
1976-01-27 0.2 0
1976-01-28 0.0 1
1976-01-29 0.0 1
1976-01-30 0.0 1
已创建列索引以将干燥天数与潮湿天数分开。干燥天数定义为总降水量不超过0.2mm的天数,指数为1.超过0.2mm的天数被认为是潮湿的,并且指数为0.
然而,我想补充另一个条件,如果一天相对干燥(降水不超过1毫米)并且在干燥(<0.2毫米)的天数之间继续干燥。 (例如1976-01-27将被视为干燥日,并且将有一个6天的干咒,而不是两个较短的咒语。)
date precip index
1976-01-15 11.4 0
1976-01-16 10.3 0
1976-01-17 3.2 0
1976-01-18 0.0 1
1976-01-19 1.2 0
1976-01-20 1.7 0
1976-01-21 3.1 0
1976-01-22 9.2 0
1976-01-23 4.6 0
1976-01-24 1.9 0
1976-01-25 0.0 1
1976-01-26 0.1 1
1976-01-27 0.2 1
1976-01-28 0.0 1
1976-01-29 0.0 1
1976-01-30 0.0 1
我真的会给予任何帮助或建议。非常感谢你! :)
答案 0 :(得分:2)
使用dplyr的lag和lead函数,你可以这样做:
require(dplyr)
mutate(df, index2 = (index | (precip <= 1 & lag(index) & lead(index))) + 0L)
# date precip index index2
#1 1976-01-15 11.4 0 0
#2 1976-01-16 10.3 0 0
#3 1976-01-17 3.2 0 0
#4 1976-01-18 0.0 1 1
#5 1976-01-19 1.2 0 0
#6 1976-01-20 1.7 0 0
#7 1976-01-21 3.1 0 0
#8 1976-01-22 9.2 0 0
#9 1976-01-23 4.6 0 0
#10 1976-01-24 1.9 0 0
#11 1976-01-25 0.0 1 1
#12 1976-01-26 0.1 1 1
#13 1976-01-27 0.2 0 1
#14 1976-01-28 0.0 1 1
#15 1976-01-29 0.0 1 1
#16 1976-01-30 0.0 1 1
+0L
将逻辑值(TRUE / FALSE)转换为整数值(1/0)。