Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 每小时降水量数据的条件修正_R - Fatal编程技术网

R 每小时降水量数据的条件修正

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&

我正在处理降水数据,希望实施一个校正方案。对于这一点,我有经验常数,我必须应用于12小时间隔内的测量

  • 如果至少有一次降水测量!=0 & != NA在12小时范围内,然后将常数除以该测量值,并将商添加到测量值中
  • 如果没有值>0&!=NA在间隔内,不执行任何操作(或添加0)
我真的不知道该从哪里开始

以下是一些随机降水数据,经验常数为0.14[mm/12h]:

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