这里可能是一个简单的问题..但我真的很苦恼,所以非常感谢帮助。如何将四维数组转换为三维数组子集的其中一个维的特定元素
我有4d数据,我想转换成3d数据。该数据具有以下属性:
lon <- 1:96
lat <- 1:73
lev <- 1:60
tme <- 1:12
data <- array(runif(96*73*60*12),
dim=c(96,73,60,12)) # fill with random test values
我想这样做是计算出前几个级别的均值(比如1:6)。新数据的格式如下:
new.data <- array(96*73*12), dim=c(96,73,12)) # again just test data
但会包含前5个数据级的平均值。目前我唯一可以做到的方法是编写一个相当低效的循环,提取前5个级别中的每一个,并将其中的总和除以5得到平均值。
我曾尝试:
new.data <- apply(data, c(1,2,4), mean)
这很好地给了我所有的垂直高度的平均值,但不能了解如何子集的第三维得到只有少数的平均!例如
new.data <- apply(data, c(1,2,3[1:5],4), mean) # which returns
Error in ds[-MARGIN] : only 0's may be mixed with negative subscripts
我渴望得到一些帮助!
感谢您的回答!我虽然它会很简单,但我觉得我有点困惑! – 2012-01-15 17:28:30
如果这确实回答了这个问题,那么通过点击复选标记就可以为其他读者提供帮助。 (目前我并不需要额外的积分,但是在使用这张支票之前,这个问题会一直显示为“未解答的问题”。) – 2012-01-15 17:59:00