У меня есть таблица данных «the.data», где в первом столбце указаны измерительный инструмент, а остальные разные измеренные данные.Найти максимум из комбинации двух таблиц (слишком медленный цикл)
instrument <- c(1,2,3,4,5,1,2,3,4,5)
hour <- c(1,1,1,1,1,2,2,2,2,2)
da <- c(12,14,11,14,10,19,15,16,13,11)
db <- c(21,23,22,29,28,26,24,27,26,22)
the.data <- data.frame(instrument,hour,da,db)
Я также определили группы инструментов, в которых, например, группы 1 (g1) относится к инструментам 1 и 2.
g1 <- c(1,2)
g2 <- c(4,3,1)
g3 <- c(1,5,2)
g4 <- c(2,4)
g5 <- c(5,3,1,2,6)
groups <- c("g1","g2","g3","g4","g5")
мне нужно, чтобы узнать, на которой час сумма каждой группы имеет максимум для каждого типа данных и его сумму.
g1 час 1: сумма (да) = 12 + 14 = 26 g1 час 2: сумма (да) = 19 + 15 = 34
Таким образом, для g1 и да ответ час 2 и значение 34.
Я сделал это с помощью цикла for внутри цикла, но это занимает слишком много времени (я прерывался через несколько часов). Проблема в том, что the.data составляет около 100 000 строк в длину и что существует около 5.000 групп с 2-50 инструментами каждый.
Что может быть хорошим методом для этого?
Искренне благодарим всех участников Stack-overflow.
Обновление: теперь только пять групп в примерах.
/Chris
Он работает с двумя группами, но вызывает у меня ошибку с пятью группами. –
@DWin Это приводит к тому, что в данных примера используются только инструменты 1-5. Другие группы ссылаются на инструменты, которых нет. –
Спасибо за быстрый и очень хороший ответ. Из чтения здесь я понял, что я пропустил некоторые инструменты в «the.data» и исправил, но оказалось, что у моих реальных данных также отсутствовали измерения (в Hour, а не в Instrument). – Chris