Wiem, że można to osiągnąć za pomocą innych pakietów, ale próbuję to zrobić w data.table
(ponieważ wydaje się, że jest najszybszy do grupowania).Jak uzyskać długość bieżącej grupy w grupie data.table?
library(data.table)
dt = data.table(a=c(1,2,2,3))
dt[,length(a),by=a]
skutkuje
a V1
1: 1 1
2: 2 1
3: 3 1
podczas gdy
df = data.frame(a=c(1,2,2,3))
ddply(df,.(a),summarise,V1=length(a))
produkuje
a V1
1 1 1
2 2 2
3 3 1
który jest bardziej sensowne wyniki. Zastanawiam się, dlaczego data.table
nie daje takich samych wyników i jak można to osiągnąć.
+1 @jamborta patrz także [FAQ 2.10] (http: //datatable.r-forge.r-project. org/datatable-faq.pdf) dla niektórych środowisk. Powodem tego jest efektywność unikania powtarzania tej samej wartości grupy przez potencjalnie długi wektor (czas i przestrzeń). W ops z dłuższymi wektorami, R i tak zresetuje wektory długości długości 1, jeśli zajdzie taka potrzeba. Więc '.N' jest sposobem na przejście tutaj. –
Dzięki chłopaki, jest to bardzo przydatne. – jamborta