Poszukuję wzorów do manipulowania obiektami data.table
, których struktura przypomina strukturę ramek danych utworzonych za pomocą melt
z pakietu reshape2
. Mam do czynienia z tabelami danych z milionami wierszy. Wydajność ma kluczowe znaczenie.Szybko stapiane operacje na tabelach danych
Uogólnioną formą pytania jest pytanie, czy istnieje sposób przeprowadzania grupowania w oparciu o podzbiór wartości w kolumnie i czy wynik operacji grupowania tworzy jedną lub więcej nowych kolumn.
Specyficzną formą pytanie może być, jak korzystać data.table
osiągnąć równowartość co dcast
działa w następujących przypadkach:
input <- data.table(
id=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
variable=c('x', 'y', 'y', 'x', 'y', 'y', 'x', 'x', 'y', 'other'),
value=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
dcast(input,
id ~ variable, sum,
subset=.(variable %in% c('x', 'y')))
którego wyjście jest
id x y
1 1 1 5
2 2 4 11
3 3 15 9
Jestem zdezorientowany , przepraszam - funkcja dcast() działa bez przymusu as.data.frame(). próbujesz to osiągnąć bez korzystania z pakietu plyr? –
@AnthonyDamico tak, chciałbym osiągnąć to bez 'dcast', który jest w' reshape2'. Usunąłem as.data.frame() - dzięki za wskazanie tego. – Sim