创建带有循环的多个数据框和列

时间:2018-10-05 11:19:54

标签: r date weather

在此感谢您的帮助,我真的很努力。 让我们跳进去吧。

我这么远

目前,我可以将天气数据与DSSAT一起使用(=作物生长模拟模型)。它的名称是REPY0001.WTH。 看起来像这样:

DSSAT的天气数据:

Weather Data for DSSAT

我设法通过以下命令将其加载到R中:

temp0 <- read.csv("Data/Wetterdaten/REPY0001.WTH", sep = "", header = FALSE)

然后它在R中看起来像这样:

RStudio中的REPY0001.WTH:

REPY0001.WTH in RStudio

我已经从RStudio导出了它,并在DSSAT中使用了它,当我通过以下命令使用3x空格作为分隔符时,它可以工作:

write.table(temp,file = "Data/Wetterdaten/test6.WTH", row.names = FALSE, quote = FALSE, col.names = FALSE, sep = "   ")

使用1或2个空格作为分隔符的DSSAT无法正确读取它。我假设对文件的外观有严格的限制,以便DSSAT可以读取它们。

我想要得到的结果

最后,我希望从REPY0001.WTH到REPY9901.WTH有 99个输出文件。 在此文件中,从第5行开始的第一列需要更改/匹配文件名中的数字。

因此文件REPY 50 01.WTH需要具有以下结构:

  

*天气数据:重复

     

@ INSI LAT LONG ELEV TAV AMP REFHT WNDHT REPY 52.190   8.195 300 9.4 8.1 -99.0 -99.0 @日期SRAD TMAX TMIN雨水DEWP WIND PAR EVAP RHUM    50 225 18.2 29.0 16.3 0.0
   50 226 15.5 24.2 14.0 0.0
   50 227 22.1 25.1 12.6 0.0
   50 228 22.0 24.1 10.4 0.0

     

但在 50 365之后达到了365年,因此需要下一列

     

51 001 ...因为它已从50年更改为51年。

并在文件REPY 51 01中。@ DATE列需要以 51 225开头... (它代表年份的后两位数字,因此1956年是-> REPY 56 和@DATE 56 225,...)

在第二步中,我想更改99个输出文件中一列的值。第一个想法是将“雨”列乘以1.0 [i]。 例如:

  

REPY0001.WTH $ Rain * 1.00

     

REPY0101.WTH $ Rain * 1.01

     

REPY0201.WTH $ Rain * 1.02

     

REPY0301.WTH $ Rain * 1.03

     

REPY0401.WTH $ Rain * 1.04

     

...   因此,例如,每年降雨量增加1%。

但是这现在真的很困难,因为当我读取R中的文件时,它是一个列表,而当我输出文件时,它们需要具有正确的DSSAT结构,以“ Header”的5行开头。

我该怎么办?

所以我的问题是,如何管理我的99个输出文件,如何修改列以及如何在不破坏结构的情况下做到这一点,因此DSSAT仍可以在以后读取它。

我尝试了很多东西,但到目前为止没有任何效果。

如果有人可以帮助我找到解决方案,我将非常感激。

0 个答案:

没有答案