Вчера я разместил вопрос о совокупных суммах, но поскольку он немного отличается, я подумал, что должен создать новую тему (я также позаботился о правильном поиске по форуму на случай, если можно использовать что-то подобное).
Я хотел бы вычислить совокупную сумму инвентаризации конкретных идентификаторов (ID 100
в приведенном ниже примере) на основе информации в двух столбцах объекта matrix / xts. Для простоты использования я добавил пример кода ниже:
a <- c(20,50,30,50,10, 40)
b <- c("100", "200", "300", "100", "100", "100")
c <- c("200", "100", "100", "200", "200", "100")
matrix1 <- cbind(a,b,c)
dim(matrix1) <- c(6,3)
colnames(matrix1) <- c("inventory", "buyer", "seller")
Когда вы помещаете этот код в R, должна появиться матрица, заданная в следующем формате:
inventory | buyer | seller
20 | 100 | 200
50 | 200 | 100
30 | 300 | 100
50 | 100 | 200
10 | 100 | 200
40 | 100 | 100
РЕДАКТИРОВАТЬ: я изменил буквы в столбцах "Покупатель" и "Продавец" на числа, чтобы теперь он работал с матрицами правильно, извините! (Обратите внимание, что, поскольку это объект xts
, слева от столбца inventory
должна быть отметка времени, но я оставил ее, поскольку она не имеет значения).
Теперь есть три идентификатора: 100
, 200
и 300
, и каждый из них покупает и продает друг у друга, при этом происходит то, что buyer
получает инвентарь в каждой строке, а seller
теряет инвентарь. Кроме того, если в столбцах buyer
и seller
указан один и тот же идентификатор, то инвентарь останется неизменным. Для моей конкретной проблемы меня интересует только совокупная инвентаризация ID 100
, и меня не волнует совокупная инвентаризация 200
и 300
.
В приведенном выше примере это означает, что в первой строке 100
совокупный запас равен 20, а во второй строке 100
теперь суммарный запас равен -30. Аналогично, для третьей строки 100
имеет совокупный запас -60, в четвертой строке он имеет совокупный запас -10, а в пятой строке 100
имеет совокупный запас 0. Для шестой строки, поскольку 100
равно В обоих столбцах buyer
и seller
инвентарь такой же, как и в пятом столбце, так что он снова равен 0.
Поэтому я хотел бы получить вектор кумулятивного инвентаря, заданный как c(20, -30, -60, -10, 0, 0)
Кроме того, поскольку это объект xts
, я не уверен, что это меняет что-нибудь (хотя я очень сомневаюсь, что это что-то меняет, единственное, что я пропустил, это тот факт, что на самом деле должен быть столбец с отметкой времени слева от матрицы. , но я исключил его, так как это не имеет отношения к вопросу).
Есть ли хороший способ вычисления совокупной суммы на основе двух столбцов и индивидуальных идентификаторов?
c(20, -30, -60, -10, 0)
. - person IRTFM   schedule 11.07.2017c(20, -30, -60, -10,0)
:) Я отредактирую свой код, чтобы включить его - person ThePlowKing   schedule 11.07.2017