2017-01-03 2 views
-3

I haben folgende Daten:Zähl- und Wählteil erste Reihe von Gruppe

df <- data.frame(id = c(1, 1, 2, 2, 2), desc = c("a1", "a2", "b1", "b2", "b3")) 

Ich möchte von ID zählen und die erste Reihe der DESC innerhalb jeder ID-Gruppe aus. Das heißt, geben Sie einen Datenrahmen wie folgt zurück.

id count desc 
1 2  a1 
2 3  b1 

Gibt es eine einfache Möglichkeit, es mit dplyr-Paket zu tun? Können Rohre + group_by() + summarise() die Arbeit tun, ohne filter() und join() zu verwenden?

Stata tun kann als:

collapse (count) count=id (first) desc, by(id) 
+1

Versuchen 'group_by()' + 'slice()' –

+1

'df%>% group_by (id) %>% muate (count = n())%>% slice (1) ' – zx8754

+0

Mit' data.table', 'setDT (df) [,. (Count = .N, first = desc [1]) , by = id] 'wird funktionieren. – lmo

Antwort

0

Wir verwenden summarise

library(dplyr) 
df %>% 
    group_by(id) %>% 
    summarise(count=n(), desc = first(desc)) 
#  id count desc 
#  <dbl> <int> <fctr> 
#1  1  2  a1 
#2  2  3  b1 
+1

danke. hat super funktioniert. – Jay

Verwandte Themen