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