मैं के साथ (मैं क्या सोचता हूँ) एक कठिन मैं निम्नलिखित किया है data.table
आर data.table सशर्त एकत्रीकरण
structure(list(id1 = c("a", "a", "a", "b", "b", "c", "c"), id2 = c("x",
"y", "z", "x", "u", "y", "z"), val = c(2, 1, 2, 1, 3, 4, 3)), .Names = c("id1",
"id2", "val"), row.names = c(NA, -7L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x1f66a78>)
मैं पर सशर्त समुच्चय बनाना चाहेंगे data.table
पर एकत्रित के साथ समस्या यह है का सामना करना पड़ा रहा हूँ दूसरे कॉलम id2
पर आधारित इस डेटा के लिए val
कॉलम। एकत्रीकरण के तरीके को केवल id1
समूहों में शामिल करना है जिसमें दिए गए id2
तत्व से कम से कम एक तत्व है। मैं यह दिखाने के लिए एक उदाहरण के माध्यम से कदम उठाऊंगा कि मेरा क्या मतलब है।
x
(पहली पंक्ति 2 स्तंभ) के लिए सशर्त कुल, id1=c
से id1 = a
के लिए val
मूल्यों 2,1,2 और val
मूल्यों = 1,3 id1 = b
क्योंकि id2=x
उनके लिए मौजूद है से लेकिन कोई मान शामिल हैं एक में जिसके परिणामस्वरूप 2 + 1 + 2 + 1 + 3 = 9 का मान। मैं चाहता हूं कि 9 प्रत्येक पंक्ति में 4 वें कॉलम के रूप में जहां id2 = x
दिखाई देता है।
इसी प्रकार, मैं इसे सभी id2
मानों के लिए करना चाहता हूं। तो अंतिम आउटपुट
id1 id2 val c.sum
1: a x 2 9
2: a y 1 12
3: a z 2 12
4: b x 1 9
5: b u 3 4
6: c y 4 12
7: c z 3 14
आर, डेटा.table में यह संभव है? या कोई अन्य पैकेज/विधि? अग्रिम
मैं उम्मीद परिणाम के साथ उलझन में हूँ। यदि id2 में ज़ेड है, तो आप c.cum में 12 की अपेक्षा करेंगे। क्या मैं कुछ भूल रहा हूँ? – jazzurro
टाइपो, मेरा मतलब 12. – broccoli
यह सब अच्छा है। अब आपको जवाब मिल गए हैं। :) – jazzurro