Czy ktoś wie o szybki sposób, aby wybrać kolumny "all-but-one" (lub "all-a-few") podczas korzystania z dplyr::group_by
? Koniec końców, chcę po prostu zebrać kilka różnych kolumn, ale nie chcę za każdym razem jawnie wymieniać wszystkich kolumn grupowania (ponieważ te są dodawane i usuwane często w mojej analizie).wybierz operator minus w dplyr group_by
Przykład:
> df <- data_frame(a = c(1,1,2,2), b = c("foo", "foo", "bar", "bar"), c = runif(4))
> df
Source: local data frame [4 x 3]
a b c
(dbl) (chr) (dbl)
1 1 foo 0.95460749
2 1 foo 0.05094088
3 2 bar 0.93032589
4 2 bar 0.40081121
Teraz chcę agregowanie przez a
i b
, więc mogę to zrobić:
> df %>% group_by(a, b) %>% summarize(mean(c))
Source: local data frame [2 x 3]
Groups: a [?]
a b mean(c)
(dbl) (chr) (dbl)
1 1 foo 0.5027742
2 2 bar 0.6655686
Wielki. Ale ja bym naprawdę lubią być w stanie zrobić coś takiego właśnie określenia niec
, podobny do dplyr::select(-c)
:
> df %>% select(-c)
Source: local data frame [4 x 2]
a b
(dbl) (chr)
1 1 foo
2 1 foo
3 2 bar
4 2 bar
Ale group_by
można zastosować wyrażenia, więc odpowiednik nie działa:
> df %>% group_by(-c) %>% summarize(mean(c))
Source: local data frame [4 x 2]
-c mean(c)
(dbl) (dbl)
1 -0.95460749 0.95460749
2 -0.93032589 0.93032589
3 -0.40081121 0.40081121
4 -0.05094088 0.05094088
Ktoś wie, czy brakuje mi podstawowej funkcji lub skrótu, aby pomóc mi to zrobić szybko?
przykład przypadek użycia: jeśli df
nagle zyskuje nową kolumnę d
chciałbym kod wylotowej do tej pory łączna nad unikalnych kombinacji a
, b
, id
, bez konieczności mi wyraźnie dodać do group_by
d
. zadzwonić)
'df%>% group_by _ (. Dots = setdiff (nazwy (df)," c "))%>% summary (średnia (c)) 'może? –
Tak, to jest to, na co się zdecydowałem, to po prostu wydaje się ... niezgrabne, jakoś. Pomyślałem, że może istnieć jakaś (nieznana mi) funkcja, która "chroni" wyrażenia takie jak "-c" od natychmiastowej oceny, która może być następnie traktowana tak, jakby zostały wykonane w wywołaniu 'select'. Ale ogólnie rzecz biorąc, tak, 'group_by_' i' setdiff' może załatwić sprawę, dzięki! – mmuurr
Zgadzam się, że można by pomyśleć, że to powinno działać, ponieważ wygląda to jak typowa składnia Dplyra. Może sprawdzić, czy istnieje FR na GH, czy może to zostało zaimplementowane w wersji rozwojowej. Jeśli nie, możesz zrobić FR i zobaczyć, jak to działa. –