Это, вероятно, простой вопрос ... но я действительно изо всех сил, поэтому помощь очень ценится.
У меня есть данные 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)
Что дает мне среднее значение ВСЕХ вертикальных уровней, но я не могу понять, как установить подмножество 3-го измерения, чтобы получить среднее значение только для нескольких!например,
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
Я отчаянно нуждаюсь в помощи!