colMeans
का प्रयास करें:
लेकिन कॉलम संख्यात्मक होना चाहिए। आप बड़े डेटासेट के लिए इसके लिए एक टेस्ट जोड़ सकते हैं।
colMeans(iris[sapply(iris, is.numeric)])
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.843333 3.057333 3.758000 1.199333
बेंचमार्क
dplyr
और data.table
के लिए लंबे समय से लगता है। शायद कोई सत्यता के लिए निष्कर्षों को दोहरा सकता है।
microbenchmark(
plafort = colMeans(big.df[sapply(big.df, is.numeric)]),
Carlos = colMeans(Filter(is.numeric, big.df)),
Cdtable = big.dt[, lapply(.SD, mean)],
Cdplyr = big.df %>% summarise_each(funs(mean))
)
#Unit: milliseconds
# expr min lq mean median uq max
# plafort 9.862934 10.506778 12.07027 10.699616 11.16404 31.23927
# Carlos 9.215143 9.557987 11.30063 9.843197 10.21821 65.21379
# Cdtable 57.157250 64.866996 78.72452 67.633433 87.52451 264.60453
# Cdplyr 62.933293 67.853312 81.77382 71.296555 91.44994 182.36578
डाटा
m <- matrix(1:1e6, 1000)
m2 <- matrix(rep('a', 1000), ncol=1)
big.df <- as.data.frame(cbind(m2, m), stringsAsFactors=F)
big.df[,-1] <- lapply(big.df[,-1], as.numeric)
big.dt <- as.data.table(big.df)
स्रोत
2015-06-19 15:12:24
'colMeans (आईरिस [, 1: 4])' के बारे में कैसे। डेटा.फ्रेम का मतलब लेना बंद कर दिया गया है। मुझे यकीन नहीं है कि आप काम करने की अपेक्षा क्यों करते हैं जब आप पहले से ही 'sapply/lapply' समाधानों के बारे में जानते हैं। – MrFlick
'कोलमेन' या 'लागू' दृष्टिकोण का उपयोग करें, लेकिन शायद इस तरह के एक प्रश्न के लिए सबसे अच्छा स्टैक ओवरफ्लो की खोज होगी। – SabDeM