R 每小时降水量数据的条件修正
我正在处理降水数据,希望实施一个校正方案。对于这一点,我有经验常数,我必须应用于12小时间隔内的测量R 每小时降水量数据的条件修正,r,R,我正在处理降水数据,希望实施一个校正方案。对于这一点,我有经验常数,我必须应用于12小时间隔内的测量 如果至少有一次降水测量!=0 & != NA在12小时范围内,然后将常数除以该测量值,并将商添加到测量值中 如果没有值>0&!=NA在间隔内,不执行任何操作(或添加0) 我真的不知道该从哪里开始 以下是一些随机降水数据,经验常数为0.14[mm/12h]: set.seed(1) Time <- seq(from = as.POSIXct("2012-05-15 07:00&
- 如果至少有一次降水测量!=0 & != NA在12小时范围内,然后将常数除以该测量值,并将商添加到测量值中
- 如果没有值>0&!=NA在间隔内,不执行任何操作(或添加0)
set.seed(1)
Time <- seq(from = as.POSIXct("2012-05-15 07:00"),
to = as.POSIXct("2012-06-15 07:00"), by = "hour")
Precipitation <- runif(Time, min=0, max = 20)
Precipitation[Precipitation >5] <- 0
Precipitation[Precipitation >4.5] <- NA
df <- data.frame(Time, Precipitation)
set.seed(1)
时间> P>我不是100%确定我对你的问题有了正确的理解,但是考虑下面的代码。< /P>
编辑:在您编辑您的问题之后,我稍微修改了代码。现在只剩下商为左的列。下面是为您工作的代码
代码
Rows = as.numeric(rownames(df[seq(1, nrow(df), 12), ]))
Twelvehour_list = split(df, cumsum(1:nrow(df) %in% (Rows)))
Solution_list = lapply(Twelvehour_list, function(x)
{if(length(x$Precipitation[x$Precipitation > 0]) == 0) {
x$newcol <- empiric_constant; x
} else {
x$newcol <-
empiric_constant/length(x$Precipitation[x$Precipitation > 0 !is.na(x$Precipitation)]);
x$newcol[x$Precipitation == 0] <- 0;
x$newcol[is.na(x$Precipitation)] <- 0;
x
}
})
输出为数据列表。框架s,每个跨度为12小时,包含商列加上修正降水数据列,即添加经验常数。这就是您的想法吗?您是否也可以添加预期输出的内容?我现在给出了一个示例,我用一个示例指定了我的请求。基本上我想用观测值的数量来划分常数(0.14)=0 & !=NA,并在观察结果行的新列中显示结果。好的,我明白了,谢谢大家!是否有方法将列表合并到一个类似于原始数据帧的data.frame?如果间隔不包含任何大于0或!=NA,然后根据你的溶液,将整个常数加到每次测量中。我试图修复它,但我对那些代码真的没有经验……这一个对我来说很有用:Rows=as.numeric(rownames(df[seq(1,nrow(df),12),])twevehour_list=split(df,cumsum(1:nrow(df)%in%(Rows)))Solution_list=lappy(twevehour_list,function(x){if(length(x$depolarident[x$dearident>0])=0){x$newcol
head(Solution_list[[10]])
Time Precipitation newcol
118 2012-05-20 04:00:00 2.063685 0.125
119 2012-05-20 05:00:00 0.000000 0.000
120 2012-05-20 06:00:00 0.000000 0.000
121 2012-05-20 07:00:00 0.000000 0.000
122 2012-05-20 08:00:00 0.000000 0.000
123 2012-05-20 09:00:00 0.000000 0.000