मेरे पास एक समान प्रश्न है: R: data.table : searching on multiple columns AND setting data type, लेकिन इस प्रश्न का पूरी तरह उत्तर नहीं दिया गया। मेरे पास एक जोड़ीदार सारणी है जो अवधारणात्मक रूप से नीचे की तरह दिखती है। तालिका एक बहुत बड़ी दूरी मैट्रिक्स को डेटा.table (> 100,000,000 पंक्तियों) में परिवर्तित करने का परिणाम है, जैसे तुलना ए, बी बी, ए के समान है। हालांकि ए और बी कॉलम वी 1 या वी 2 में दिखाई दे सकते हैं। मैं डेटा.table की क्वेरीिंग शैली का उपयोग करके सरल सारांश आंकड़ों की गणना करना चाहता हूं, लेकिन मुझे यह पता नहीं लगा है कि कॉलम में कुंजियों का चयन कैसे करें। क्या यह संभव है?आर एकाधिक कॉलमों में सारांश आंकड़ों की गणना के लिए डेटाटेबल
मैंने किसी भी दिशा में कुंजी सेट करने का प्रयास किया है, लेकिन यह केवल उस कॉलम के लिए डेटा देता है। मैंने सूची() का उपयोग करने का भी प्रयास किया, लेकिन यह चौराहे (समझ में आता है) देता है, मुझे उम्मीद है कि एक by = key1 | key2, लेकिन ऐसी कोई किस्मत नहीं है।
> set.seed(123)
>
> #create pairwise data
> a<-data.table(t(combn(3,2)))
> #create column that is equal both ways, 1*2 == 2*1
> dat<-a[,data:=V1*V2]
> dat
V1 V2 data
1: 1 2 2
2: 1 3 3
3: 2 3 6
#The id ==2 is the problem here, the mean should be 4 ((2+6)/2)
> #set keys
> setkey(dat,V1,V2)
>
> #One way data
> dat[,c("MEAN","VAR"):=list(mean(data),var(data)),by=V1]
> dat
V1 V2 data MEAN VAR
1: 1 2 2 2.5 0.5
2: 1 3 3 2.5 0.5
3: 2 3 6 6.0 NA
> #The other way
> dat[,c("MEAN","VAR"):=list(mean(data),var(data)),by=V2]
> dat
V1 V2 data MEAN VAR
1: 1 2 2 2.0 NA
2: 1 3 3 4.5 4.5
3: 2 3 6 4.5 4.5
>
> #The intersect just produces the original data
> dat[,c("MEAN","VAR"):=list(mean(data),var(data)),by=list(V1,V2)]
> dat
V1 V2 data MEAN VAR
1: 1 2 2 2 NA
2: 1 3 3 3 NA
3: 2 3 6 6 NA
>
> #Meaningless but hopefull attempt.
> dat[,c("MEAN","VAR"):=list(mean(data),var(data)),by=V1|V2]
> dat
V1 V2 data MEAN VAR
1: 1 2 2 3.666667 4.333333
2: 1 3 3 3.666667 4.333333
3: 2 3 6 3.666667 4.333333
#The goal is to create a table would look like this (using mean as an example)
ID MEAN
1 2.5
2 4.0
3 4.5
मेरे डिफ़ॉल्ट विचारों भी एक Dat के माध्यम से लूप होगा [V1 == x | V2 == x] बयान है, लेकिन मुझे नहीं लगता मैं data.table की पूरी शक्ति का दोहन कर रहा हूँ है सारांश कॉलम के रूप में var के साथ ids के एकल कॉलम को वापस करने के लिए।
धन्यवाद!
वास्तव में क्या आपके की उम्मीद है परिणाम यहाँ? – eddi
आशावादी परिणाम को प्रतिबिंबित करने के लिए संपादित किया गया है, जो उस आईडी के माध्य और var के साथ आईडी का एक स्तंभ है। स्पष्टीकरण में मदद के लिए धन्यवाद। – bw4sz