我正在尝试计算美国全球流通模型(GCM)的最大值,最小值和平均值。该数据为3小时区块,分别为2026-2045和2081-2100。
tmp1 <- structure(list(FIPS = c(1001L, 1003L, 1005L), X2026.01.01.1 = c(285.5533142,
285.5533142, 286.2481079), X2026.01.01.2 = c(283.4977112, 283.4977112,
285.0860291), X2026.01.01.3 = c(281.9733887, 281.9733887, 284.1548767
), X2026.01.01.4 = c(280.0234985, 280.0234985, 282.6075745),
X2026.01.01.5 = c(278.7125854, 278.7125854, 281.2553711),
X2026.01.01.6 = c(278.5204773, 278.5204773, 280.6148071)), .Names = c("FIPS",
"X2026.01.01.1", "X2026.01.01.2", "X2026.01.01.3", "X2026.01.01.4",
"X2026.01.01.5", "X2026.01.01.6"), class = "data.frame", row.names = c(NA,
-3L))
我已使用FIPS代码提取数据,并使用melt()
重新整形年度数据文件;
for (i in filelist) {
tmp1 <- as.data.table(read.csv(i,header=T, sep=","))
tmp2 <- melt(tmp1, id="FIPS")
tmp2$year <- as.numeric(substr(tmp2$variable,2,5))
tmp2$month <- as.numeric(substr(tmp2$variable,7,8))
tmp2$day <- as.numeric(substr(tmp2$variable,10,11))
}
我使用以下代码添加了日期字符串和工作日:
tmp2$date <- with(tmp2, ymd(sprintf('%04d%02d%02d', year, month, day)))
tmp2$day <- weekdays(as.Date(tmp2$date))
sample.tmp2 <- "FIPS xdate temp year month day date dates weekdays
+ 5599311 1003 X2045.08.14.2 304.5995 2045 8 Monday 2045-08-14 2036-01-29 2
+ 468406 39093 X2045.01.19.7 267.8483 2045 1 Thursday 2045-01-19 2028-06-04 0
+ 5022078 21167 X2045.07.21.8 314.6772 2045 7 Friday 2045-07-21 2035-09-13 4
+ 186822 9005 X2045.01.08.5 269.0803 2045 1 Sunday 2045-01-08 2037-06-28 0
+ 3998678 13295 X2045.06.10.7 307.2408 2045 6 Saturday 2045-06-10 2033-10-13 4"
Data <- read.table(text=sample.tmp2, header = TRUE)
我的目标是将这些3小时的块聚合成每周数据,但是,GCM数据不一致,块在7到8之间变化。我想将数据剪辑到2026年的第一个星期一开始并结束在2045年的最后一个星期日,然后使用rep()为整个时期分配周数。
我知道我可以使用这样的东西计算每天的数量;
length(which(weekdays == '0'))
其中0,1,2 ......,6表示星期日,星期一,......
我的问题是我在尝试汇总数据时做错了什么?但重要的是,我将非常感谢任何帮助将数据集剪辑为在第一个星期一开始并在最后一个星期日结束。非常感谢你!