मेरे पास निम्न डेटा फ़्रेम है
x <- read.table(text = " id1 id2 val1 val2
1 a x 1 9
2 a x 2 4
3 a y 3 5
4 a y 4 9
5 b x 1 7
6 b y 4 4
7 b x 3 9
8 b y 2 8", header = TRUE)
मैं id1 और id2 द्वारा समूहीकृत val1 और val2 के माध्य की गणना करना चाहता हूं, और साथ ही साथ प्रत्येक id1-id2 संयोजन के लिए पंक्तियों की संख्या गिनता हूं। मैं प्रत्येक गणना अलग-अलग कर सकता हूं:
# calculate mean
aggregate(. ~ id1 + id2, data = x, FUN = mean)
# count rows
aggregate(. ~ id1 + id2, data = x, FUN = length)
एक कॉल में दोनों गणना करने के लिए, मैंने कोशिश की
do.call("rbind", aggregate(. ~ id1 + id2, data = x, FUN = function(x) data.frame(m = mean(x), n = length(x))))
हालाँकि, मुझे चेतावनी के साथ एक आउटपुट मिला है:
# m n
# id1 1 2
# id2 1 1
# 1.5 2
# 2 2
# 3.5 2
# 3 2
# 6.5 2
# 8 2
# 7 2
# 6 2
# Warning message:
# In rbind(id1 = c(1L, 2L, 1L, 2L), id2 = c(1L, 1L, 2L, 2L), val1 = list( :
# number of columns of result is not a multiple of vector length (arg 1)
मैं plyr पैकेज का उपयोग कर सकता हूं, लेकिन डेटासेट बड़ा होने पर मेरा डेटा सेट काफी बड़ा है और प्लाई बहुत धीमा (लगभग अनुपयोगी) है।
मैं aggregate
एक कॉल में कई गणना करने के लिए अन्य कार्यों का उपयोग कैसे कर सकता हूं ?
aggregate
जवाब में उल्लेखित भी हैंby
औरtapply
।