2017-03-06 64 views
1

我有兩個數據表爲:計算剪切操作上的每個組中的R data.table

DT:

a | segment 
10 | 1 
20 | 1 
30 | 1 
40 | 1 
50 | 1 
60 | 1 
70 | 1 
80 | 1 
90 | 1 
100 | 1 
10 | 2 
20 | 2 
30 | 2 
40 | 2 
50 | 2 
60 | 2 
70 | 2 
80 | 2 
90 | 2 
100 | 2 

DTBins:

bin| segmentVal 
25 | 1 
50 | 1 
75 | 1 
20 | 2 
40 | 2 
60 | 2 
80 | 2 

我想將cut函數應用於DT的列「a」,並按列「分段」進行分組,結果輸出如下:

申請切斷與(25,50,75),所有值在列中的DT,與段1和切割(20,40,60,80)的值在一個,與段2

到目前爲止,我寫道:

DT[, bins := cut(a, breaks = DTBins[segmentVal == segment, bin]), by = seg] 

但是,這適用於切割所有行只有部分= 2 任何想法。

回答

1

我們可以嘗試

DT[, bins := unlist(Map(function(x,y) 
     cut(x$a, breaks = y), split(DT, DT$segment), split(DTBins$bin, DTBins$segmentVal)))] 
+1

謝謝@akrun工作就像一個魅力。 –