क्या यह group_by
है जो dplyr का उपयोग करके कॉलम नामों पर रेगेक्स मैच का उपयोग कर संभव है?कुल गतिशील कॉलम नाम से समूह
library(dplyr) # dplyr_0.5.0; R version 3.3.2 (2016-10-31)
# dummy data
set.seed(1)
df1 <- sample_n(iris, 20) %>%
mutate(Sepal.Length = round(Sepal.Length),
Sepal.Width = round(Sepal.Width))
समूह स्थिर संस्करण से (लग रहा है/ठीक काम करता है, कल्पना अगर हम 10-20 कॉलम):
df1 %>%
group_by(Sepal.Length, Sepal.Width) %>%
summarise(mySum = sum(Petal.Length))
समूह गतिशील द्वारा - "बदसूरत" संस्करण:
df1 %>%
group_by_(.dots = colnames(df1)[ grepl("^Sepal", colnames(df1))]) %>%
summarise(mySum = sum(Petal.Length))
आदर्श रूप से, ऐसा कुछ (काम नहीं करता है, starts_with
सूचकांक देता है):
df1 %>%
group_by(starts_with("Sepal")) %>%
summarise(mySum = sum(Petal.Length))
Error in eval(expr, envir, enclos) : wrong result size (0), expected 20 or 1
अपेक्षित उत्पादन:
# Source: local data frame [6 x 3]
# Groups: Sepal.Length [?]
#
# Sepal.Length Sepal.Width mySum
# <dbl> <dbl> <dbl>
# 1 4 3 1.4
# 2 5 3 10.9
# 3 6 2 4.0
# 4 6 3 43.7
# 5 7 3 15.7
# 6 8 4 6.4
नोट: लगता है बहुत ज्यादा एक दोहराया पोस्ट की तरह, कृपया प्रासंगिक पोस्ट लिंक यदि कोई हो।
'DF1%>% group_by _ (डॉट्स = ग्रेप ("^बाह्यदल ", नाम(), मूल्य = TRUE)) '? –
@ डॉकेंडोडिस्किमस हां, मेरे बदसूरत संस्करण का थोड़ा सा सुंदर संस्करण। – zx8754
मुझे लगता है कि यह 'start_with' के साथ काम नहीं करता है क्योंकि' group_by' को चरित्र इनपुट की आवश्यकता होती है जबकि 'start_with' कॉलम के सूचकांक –