0

对于每个实验,我都有一个天气数据集,存储在一个名为trimmed_data[[i]]. 来自 trimmed_data 的第一个数据集 - 气象站收集的原始度日值

newlist <- list()
for(i in sequence(length(trimmed_data))){
  df2<-as.data.frame(trimmed_data[[i]])
  df2 <- transform(df2, 
                   obs.date = as.Date(as.character(df2$obs.date), format = "%Y-%m-%d"))
  month <- format(df2$obs.date, "%m")
  condition = isTRUE(month >= 1 & month < 9)
  which_row <- which(df2$obs.date == 12-31) 
  if(condition){
    last_DD <- df2[which_row,17]
    df2$DD.base.temp.0 <- df2$DD.base.temp.0 + last_DD
  }else{
    next
    }
  
  firstrow <- df2[1,]
  df2$DD.base.temp.0 <- df2$DD.base.temp.0 - firstrow$DD.base.temp.0
  newlist[[i]] <- df2
}

新列表中的第一个数据集,其中第一行从每一行中减去

我需要从 trimmed_data[ 1 ] 的第 109 行(即 2593 到 newlist[ 1 ] 的第 110 行及以后)获取值,并对列表中的所有数据集执行相同的操作。

本质上,这是我所做工作的细分。

  1. 我将 obs.date 列从数字转换为日期类型。
  2. 然后我将每一行的月份存储到向量“月”中。如果观察日期是从 1 月到 8 月,我必须在每年 12 月 31 日之前将 DD.base.temp.0(或 0 摄氏度基准温度下的度数)添加到这些行中。否则,没有。
  3. 然后我将每个数据集的第一行的值存储在一个称为第一行的向量中,该值是每个实验的播种日期。
  4. 我将第一行的值减去所有行
  5. 然后我在 new_list 中编译所有内容。

这样做的目的是将播种日的度日重置为 0,并根据种植日历计算度日的累积。气象站于 1 月 1 日开始记录度日(作物生长所需的累积温度),并于 12 月 31 日终止。

不幸的是,我的代码时钟没有做它应该做的事情。你知道为什么它不工作吗?你有什么建议吗?

我正在分析气候数据是有原因的。您的帮助将不胜感激。

您可以通过此链接访问数据文件和脚本: https ://drive.google.com/drive/folders/1g_ivAe5MFfpNwif3h0DyHpOekat8fErx?usp=sharing

4

0 回答 0