2015-02-26 9 views
5

मैं समेकन योजना को फिर से लिखने के बिना, एकाधिक डेटा तालिकाओं में समान एकत्रीकरण लागू करना चाहता हूं।आर डेटाटेबल: एक समेकन का पुन: उपयोग करें

पर विचार करें

dt1 <- data.table(id = c(1,2), a = rnorm(10), b = rnorm(10), c = rnorm(10)) 
dt2 <- data.table(id = c(1,2), a = rnorm(10), b = rnorm(10), c = rnorm(10)) 

dt1_aggregates <- dt1[, .(mean_a=mean(a), sd_a=sd(a), mean_b=mean(b), sd_b=sd(b)), by=id] 
dt2_aggregates <- dt2[, .(mean_a=mean(a), sd_a=sd(a), mean_b=mean(b), sd_b=sd(b)), by=id] 

वहाँ किसी तरह दो बार यह पता लिखने के लिए बिना DT2 के लिए dt1_aggregates एकत्रीकरण योजना का पुन: उपयोग करने के लिए है?

उत्तर

7

आप अभिव्यक्ति आप चाहते बोली सकते हैं और फिर data.table भीतर का मूल्यांकन:

my.call=quote(list(mean_a=mean(a), sd_a=sd(a), mean_b=mean(b), sd_b=sd(b))) 
dt1[, eval(my.call), by=id] 

उत्पादन

id  mean_a  sd_a  mean_b  sd_b 
1: 1 0.004165423 0.7504691 -0.05001424 1.4440434 
2: 2 -0.430910188 0.9648096 0.26918995 0.8680997 

और

dt2[, eval(my.call), by=id] 

उत्पादन

id  mean_a  sd_a  mean_b  sd_b 
1: 1 0.2974145 1.191863 -0.0588854 0.7896988 
2: 2 -0.4642856 1.438937 0.3612607 1.0581702 
संबंधित मुद्दे