आरसीएस काम करता है द्वारा प्रदान की जवाब और सरल है। हालांकि, अगर आप बड़े डेटासेट से निपटने के लिए और एक प्रदर्शन को बढ़ावा देने की जरूरत है कर रहे हैं वहाँ एक तेजी से वैकल्पिक है:
library(data.table)
data = data.table(Category=c("First","First","First","Second","Third", "Third", "Second"),
Frequency=c(10,15,5,2,14,20,3))
data[, sum(Frequency), by = Category]
# Category V1
# 1: First 30
# 2: Second 5
# 3: Third 34
system.time(data[, sum(Frequency), by = Category])
# user system elapsed
# 0.008 0.001 0.009
के एक ही बात करने के लिए डेटा का उपयोग कर कि तुलना करें।फ्रेम और ऊपर से ऊपर:
data = data.frame(Category=c("First","First","First","Second","Third", "Third", "Second"),
Frequency=c(10,15,5,2,14,20,3))
system.time(aggregate(data$Frequency, by=list(Category=data$Category), FUN=sum))
# user system elapsed
# 0.008 0.000 0.015
और तुम स्तंभ रखना चाहते हैं इस वाक्य रचना है:
data[,list(Frequency=sum(Frequency)),by=Category]
# Category Frequency
# 1: First 30
# 2: Second 5
# 3: Third 34
अंतर कोड के रूप में नीचे को दर्शाता है, बड़े डेटासेट के साथ और अधिक ध्यान देने योग्य हो जाएगा:
data = data.table(Category=rep(c("First", "Second", "Third"), 100000),
Frequency=rnorm(100000))
system.time(data[,sum(Frequency),by=Category])
# user system elapsed
# 0.055 0.004 0.059
data = data.frame(Category=rep(c("First", "Second", "Third"), 100000),
Frequency=rnorm(100000))
system.time(aggregate(data$Frequency, by=list(Category=data$Category), FUN=sum))
# user system elapsed
# 0.287 0.010 0.296
कई एकत्रित के लिए, आप को जोड़ सकते हैं lapply
और +०१२३८८०३६६के रूप में अभी हाल ही में
data[, lapply(.SD, sum), by = Category]
# Category Frequency
# 1: First 30
# 2: Second 5
# 3: Third 34
@AndrewMcKinlay, R सांख्यिकी और अन्य कार्यों के लिए, प्रतीकात्मक सूत्रों को परिभाषित करने के लिए tilde का उपयोग करता है। इसे "श्रेणी द्वारा मॉडल फ्रीक्वेंसी" * या * "श्रेणी के आधार पर आवृत्ति" * के रूप में व्याख्या किया जा सकता है।आर में यहां किए गए एक प्रतीकात्मक कार्य को परिभाषित करने के लिए सभी भाषाएं एक विशेष ऑपरेटर का उपयोग नहीं करती हैं। शायद टिल्ड ऑपरेटर की "प्राकृतिक भाषा व्याख्या" के साथ, यह अधिक सार्थक (और यहां तक कि अंतर्ज्ञानी) बन जाता है। मैं व्यक्तिगत रूप से इस प्रतीकात्मक फॉर्मूला प्रतिनिधित्व को अधिक वर्बोज विकल्पों में से कुछ से बेहतर पाता हूं। – r2evans