У меня есть большой (500K строк) фрейм данных (с именем DF) из двух столбцов, первый из которых является уникальным идентификатором (не монотонно увеличивается), а второй - размером в целых числах, например:
ID, Size
"K0012234",2335
"K0012345",12
"K0012387",1213
"K0012393",828
"K0012400",123
Мне нужно сгруппируйте эти предметы в соответствии с определенным общим размером последовательно. Хотя каждый элемент в наборе результатов представляет собой одну строку с разделителями-запятыми, он может содержать переменное количество элементов. Например, для данного BoxSize = 2500 мне нужен список строк
L[0]<-"K0012234,K0012345"
L[1]<-"K0012387,K0012393,K0012400"
Что такое лучший способ добиться этого с помощью R?
Если бы я кодировал это на другом языке, мне, вероятно, понадобилась бы функция с for l oop с оператором if. Я не умею делать это в R, но алгоритм должен выглядеть примерно так (он предназначен для того, чтобы дать представление, я знаю, что в нем есть некоторые незначительные ошибки):
boxSize=2500
CurrentTotal=0
box=""
NumberOfRows<-length(DF$ID)
For(int i=0;i<NumberOfRows;i++)
{
if (CurrentTotal<boxSize)
{
box=box+","+DF$ID[i]
CurrentTotal=CurrentTotal+DF$Size[i]
}
else
{
L.add(box)
box=DF$ID
CurrentTotal=DF$Size[i]
}
}