【发布时间】:2017-01-22 16:32:14
【问题描述】:
我有以下数组,我称之为站:
A1 <- matrix(runif(120),24,5)
A1[1:12,1]<-2012
A1[13:24,1]<-2013
A1[1:12,2]<-(1:12)
A1[13:24,2]<-(1:12)
A1[1:12,3]<-seq(1,24,by=2)
A1[13:24,3]<-seq(1,24,by=2)
A2 <- matrix(runif(120),24,5)
A2[1:12,1]<-2012
A2[13:24,1]<-2013
A2[1:12,2]<-(1:12)
A2[13:24,2]<-(1:12)
A2[1:12,3]<-seq(1,24,by=2)
A2[13:24,3]<-seq(1,24,by=2)
station <- array(NA,c(24,5,2))
station[,,1] <- A1
station[,,2] <- A2
dimnames(station)[[2]]<-c('year','month','day','win_3','win_7')
dimnames(station)[[3]]<-c('station1','station2')
print(station)
我想提取 win_3 的最大值,我称之为 Max_3Days 通过每个站每年春季(即 3,4 和 5 月份),并指定相应的日期和月份值(3,4 或5).
最小值也是一样的,我想从 win_7 中提取它,我在每个站每年夏季(即 6,7 和 8 月)调用 Min_7Days 并指定相应的月份值(6 ,7 或 8) 和日期
如果可能,我希望将结果保留为 数组格式。
结果应该是这样的:
, , 1
Year Month day Max_3Days Year Month Day Min_7Days
[1,] 2012 3 15 2800 2012 6 1 400
[2,] 2013 4 2 2730 2013 6 4 100
, , 2
Year Month day Max_3Days Year Month Day Min_7Days
[1,] 2012 4 15 2800 2012 7 10 250
[2,] 2013 5 2 2750 2013 7 14 271
当我只有一个站作为数据框格式时,我确实指定了春季和夏季并找到了最大值、最小值,我想以数组格式的(矩阵)对大约 70 个站执行此操作,并且我想将结果保存在一个数组中:
如果是数据帧(只有一个站):
Summer<-station[which(station$month>"5"&station$month<"9"),]
Minima<-ddply(Summer, ~ year, summarise, month=month[which.min(win_7)],day=day[which.min(win_7)], Min_7Days =min(win_7, na.rm = TRUE))
Spring<-station[which(station$month>"2"&station$month<"6"),]
Maxima<-ddply(Spring, ~ year, summarise, month=month[which.max(win_3)],day=day[which.max(win_3)], Max_3Days =max(win_3, na.rm = TRUE))
任何建议将不胜感激!
【问题讨论】:
-
请使用
dput显示示例数据集 -
我更新了我的问题,很抱歉造成混乱
-
@NuhaJ.Alhowramy 你能重新确认共享的预期输出值吗?最大值是多少?
-
@joel.wilson: 以千为单位的最大值没有问题,但是月份值是 NA 因为每个月在实际数据中重复 30 次(根据天数)例如:月:1,1,1,1,1,1,1,1,1 然后 2,2,2,2,2,2,2,3,3,3,3,3,3,... 。 等等。我尝试了很多东西,对我没有用:(
-
@NuhaJ.Alhowramy 这不应该造成问题..你检查我的号码了吗?它给出了结果