Я пытаюсь добавить некоторые функции в группы. Data.frame ниже (сгруппированных) мой «ключ» (думаю, Excel ВПР):Как сделать следующую функцию «применить» в R более эффективной?
Original Grouped
1 Features Constant
2 PhoneService Constant
3 PhoneServices Constant
4 Surcharges Constant
5 CallingPlans Constant
6 Taxes Constant
7 LDUsage Noise
8 RegionalUsage Noise
9 LocalUsage Noise
10 Late fees Noise
11 SpecialServices Noise
12 TFUsage Noise
13 VoipUsage Noise
14 CCUsage Noise
15 Credits Credits
16 OneTime OneTime
Я тогда ссылаться на свою базу данных, которая содержит столбец (BillSection), который берет на себя конкретное значение из сгруппированных $ Original, и Я хочу сгруппировать его в соответствии с группировкой $ Grouped. Я использую функцию sapply для выполнения этой операции. Затем я вставляю результат в исходный файл данных.
grouper<-as.character(sapply(as.character(bill.data$BillSection[1:100]), # for the first 100 records of the data.frame bill.data
function(x)grouped[grouped$Original==x,2])) # take the second column, i.e. Grouped, for the corresponding "TRUE" value in Original
cbind(bill.data[1:100,],as.data.frame(grouper))
Приведенный выше код работает, как ожидалось, но это медленно, когда я применяю его на всю мою базу данных, которая превышает 10000000 уникальные записи. Есть ли альтернатива этому методу? Я знаю, что могу использовать plyr, но он еще медленнее (я думаю), чем просто. Я пытался понять это с помощью data.table, но не повезло. Любые предложения будут полезны. Я открыт для кодирования этого в Python, к которому я новичок, но слышал намного быстрее, чем R, поскольку я часто занимаюсь крупными наборами данных. Я хотел знать, сможет ли R сделать это достаточно быстро, чтобы быть полезным.
Спасибо!
Я не могу сказать, что вы пытаетесь выполнить здесь (может быть, описать это словами, а не кодом?), Но если вы 'cbind'ing повторно для каждой группы 100, которые могли бы [легко убить производительность] (http://stackoverflow.com/questions/2908822/speed-up-the-loop-operation-in-r/8474941#8474941). –
Я только один раз, в конце. Я пытаюсь «найти» значение в bill.data $ BillSection (который будет «Features», «OneTime», «PhoneServices» и т. Д.) И группировать его в «Constant», «Noise», «OneTime» »или« Кредиты »). Это будет использоваться для последующего построения. – ilanman