मैं समूह द्वारा डेटाटेबल में संदर्भ द्वारा अभी तक लागू नहीं किए गए (मेरे ज्ञान के लिए) असाइनमेंट का सबसे अच्छा विकल्प ढूंढ रहा हूं। data.table उदाहरण का उपयोग करना,डेटाटेबल समूहबद्ध असाइनमेंट के लिए डीटी [, x: = f (y), = z] के रूप में कुशल विकल्प?
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
x y v
[1,] a 1 1
[2,] a 3 2
[3,] a 6 3
[4,] b 1 4
[5,] b 3 5
[6,] b 6 6
[7,] c 1 7
[8,] c 3 8
[9,] c 6 9
मैं एक नया स्तंभ जेड को जोड़ने के लिए, च युक्त चाहते हैं (y, v) एक्स के मूल्यों के आधार पर वर्गीकृत (देता है च (y, v) = मतलब (y) ले + v)। ध्यान दें कि मैं प्रिंट या के रूप में
DT[,mean(y)+v,by=x]
x V1
[1,] a 4.333333
[2,] a 5.333333
[3,] a 6.333333
[4,] b 7.333333
[5,] b 8.333333
[6,] b 9.333333
[7,] c 10.333333
[8,] c 11.333333
[9,] c 12.333333
में बल्कि मैं डीटी के लिए परिणाम जोड़ना चाहते हैं इस गणना के परिणाम स्टोर करने के लिए नहीं करना चाहती:
x y v V1
[1,] a 1 1 4.333333
[2,] a 3 2 5.333333
[3,] a 6 3 6.333333
[4,] b 1 4 7.333333
[5,] b 3 5 8.333333
[6,] b 6 6 9.333333
[7,] c 1 7 10.333333
[8,] c 3 8 11.333333
[9,] c 6 9 12.333333
मेरी data.table 262 एमबी है, ऐसी है कि
DT <- DT[,transform(.SD,mean(y)+v),by=x]
, एक विकल्प नहीं है के बाद से मैं स्मृति में दो बार डीटी फिट नहीं कर सकते हैं (जो प्रति आपरेशन द्वारा निहित है, मुझे लगता है)। तथ्य यह है कि मैंने कभी ऑपरेशन खत्म नहीं देखा है।
मेरे पास कौन से विकल्प हैं (जब तक डेटाटेबल डीटी के साथ आता है [, z: = mean (y) + v, by = x])?
मैंने अभी डीटी [newDT] के बारे में पढ़ा है। यहाँ क्या गलत है?
newDT <- DT[,mean(y)+v,by=x]
x V1
[1,] a 4.333333
[2,] a 5.333333
[3,] a 6.333333
[4,] b 7.333333
[5,] b 8.333333
[6,] b 9.333333
[7,] c 10.333333
[8,] c 11.333333
[9,] c 12.333333
(जो संभव स्मृति बुद्धिमान है।) तो:
> DT[newDT]
setkey(DT,x)
setkey(newDT,x)
x y v V1
a 1 1 4.333333
a 3 2 4.333333
a 6 3 4.333333
a 1 1 5.333333
a 3 2 5.333333
a 6 3 5.333333
a 1 1 6.333333
a 3 2 6.333333
a 6 3 6.333333
b 1 4 7.333333
b 3 5 7.333333
b 6 6 7.333333
b 1 4 8.333333
b 3 5 8.333333
b 6 6 8.333333
b 1 4 9.333333
b 3 5 9.333333
b 6 6 9.333333
c 1 7 10.333333
c 3 8 10.333333
c 6 9 10.333333
c 1 7 11.333333
c 3 8 11.333333
c 6 9 11.333333
c 1 7 12.333333
c 3 8 12.333333
c 6 9 12.333333
लेकिन यह नहीं है कि मैं क्या चाहता हूँ। यहाँ क्या गलती है?
+1 महान प्रश्न:
तो यह अपना रास्ता जो मेरी आप एक दूसरी चाबी की जरूरत काफी समान है ऐसा करने के लिए! –