对于每个实验,我都有一个天气数据集,存储在一个名为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 行及以后)获取值,并对列表中的所有数据集执行相同的操作。
本质上,这是我所做工作的细分。
- 我将 obs.date 列从数字转换为日期类型。
- 然后我将每一行的月份存储到向量“月”中。如果观察日期是从 1 月到 8 月,我必须在每年 12 月 31 日之前将 DD.base.temp.0(或 0 摄氏度基准温度下的度数)添加到这些行中。否则,没有。
- 然后我将每个数据集的第一行的值存储在一个称为第一行的向量中,该值是每个实验的播种日期。
- 我将第一行的值减去所有行
- 然后我在 new_list 中编译所有内容。
这样做的目的是将播种日的度日重置为 0,并根据种植日历计算度日的累积。气象站于 1 月 1 日开始记录度日(作物生长所需的累积温度),并于 12 月 31 日终止。
不幸的是,我的代码时钟没有做它应该做的事情。你知道为什么它不工作吗?你有什么建议吗?
我正在分析气候数据是有原因的。您的帮助将不胜感激。
您可以通过此链接访问数据文件和脚本: https ://drive.google.com/drive/folders/1g_ivAe5MFfpNwif3h0DyHpOekat8fErx?usp=sharing