data.table

data.tabela vs dplyr: czy jeden może zrobić coś dobrze drugi nie może lub robi źle?

Przegląd Jestem stosunkowo zaznajomiony z data.table, nie tak bardzo z dplyr. Przeczytałem kilka dplyr w 2011 roku, po raz ... 1L, 0L, 0L, 0L, 0L, 0L)), .Names = c("id", "name", "year", "job", "job2"), class = "data.frame", row.names = c(NA, -16L))

Co? does.SD / align = "left" / tabela W R

.SD wygląda na przydatny, ale tak naprawdę Nie wiem, co z nim robię. Co to oznacza? Dlaczego jest poprzedzający okres (kropka ... rupowania przez by, keyed by i _ad hoc_ by Czy to znaczy, że córka data.tableS jest trzymana w pamięci na następną operację?

Zrozumienie dokładnie, kiedy dane.tabela jest odniesieniem do (w porównaniu z kopią) innych danych.tabela

Mam mały problem ze zrozumieniem właściwości pass-by-reference data.table. Niektóre operacje wydają się "łamać" odniesienie i ... upewnić się, że nie wprowadzam potencjalnych błędów w moim kodzie. Byłbym bardzo wdzięczny, gdyby ktoś mógł to wyjaśnić ja.

Dlaczego X [Y] łączy dane.tabele nie pozwalają na pełne zewnętrzne połączenie lub lewe połączenie?

To jest trochę filozoficzne pytanie o dane.składnia table join. Znajduję coraz więcej zastosowań dla danych.stoły, ale wciąż ... h (wewnętrzne, zewnętrzne, lewe, prawda)? zawiera kilka przykładów dodatkowych typów połączeń, które dane.stół sobie poradzi.

Najszybszy sposób na zastąpienie NAs dużymi danymi.tabela

Mam duże Dane.tabela , z wieloma brakującymi wartościami rozrzuconymi po ~200k wierszach i 200 kolumnach. Chciałbym ponownie ... y z dość wydajnego rozwiązania typu 1. Konwersja na dane.Klatka, a następnie z powrotem do danych.tabela nie bierze za długo.

Dlaczego pandy w Pythonie były szybsze od danych?tabela fuzji W R w 2012 roku?

Ostatnio natknąłem się na pandas bibliotekę dla Pythona, która zgodnie z Ten benchmark wykonuje bardzo szybkie scalanie w pam ... ię do merge(X, Y, all=FALSE) i merge(X, Y, all=TRUE)? Oto kod R i Kod Pythona używany do porównywania różnych pakietów.

Co można zrobić z danymi.ramka, której nie można z danymi.stolik?

Właśnie zacząłem używać R, i natknąłem się na dane.stolik. Uważam to za genialne. Bardzo naiwne pytanie: Czy mogę zignorować dane.ramka do wykorzystania danych.tabela aby uniknąć pomyłek składni pomiędzy dwoma pakietami?

.EACHI w danych.stolik?

Nie mogę znaleźć żadnej dokumentacji na temat tego, co dokładnie .EACHI robi w data.table. W tej chwili nie ma nic do rzeczy. ... ś takiego jak DT[i,j,by=my_grouping_variable], ale jestem zdezorientowany, jak .EACHI będzie działać. Czy ktoś może wyjaśnić?

Agregacja / podsumowanie wielu zmiennych w grupie (np. suma, średnia)

Z ramki danych, czy jest łatwy sposób na agregację (sum, mean, max et c) wiele zmiennych jednocześnie? Poniżej kilka przykła ... les by year month df2=aggregate(x1 ~ year+month, data=df1, sum, na.rm=TRUE) head(df2) Wszelkie sugestie będą mile widziane.

Dlaczego rbindlist jest "lepszy" niż rbind?

Przeglądam dokumentację data.table, a także zauważyłem z niektórych rozmów tutaj na tak, że rbindlist ma być lepszy niż rbind ... ind i w jakich scenariuszach rbindlist naprawdę przewyższa rbind? Czy jest jakaś korzyść w zakresie wykorzystania pamięci?

Przypisz wiele kolumn używając: = in data.tabela z podziałem na grupy

Jaki jest najlepszy sposób przypisania do wielu kolumn za pomocą data.table? Na przykład: f <- function(x) {c("hi", "hel ... ym zrobić: x[ , col_names := another_f(), by = "id", with = FALSE] Jaki jest prawidłowy sposób, aby zrobić coś takiego?

Jaki jest cel ustawienia klucza w danych.stolik?

Używam danych.table i jest wiele funkcji, które wymagają od mnie ustawienia klucza (np. X[Y]). W związku z tym chciałbym zroz ... st jeszcze bardziej mylące, ponieważ Nie wiem, czy mogę ustawić dowolną inną kolumnę jako klucz. Czy ktoś może mnie oświecić?

Właściwy / najszybszy sposób przekształcania danych.tabela

Mam tabelę danych W R: library(data.table) set.seed(1234) DT <- data.table(x=rep(c(1,2,3),each=4), y=c("A","B"), v=sam ... ch po ich agregacji? Czy jest jakiś sposób, aby połączyć te operacje w jednym kroku, przy użyciu danych.operacje przy stole?

Jak usunąć kolumnę według nazwy w danych.stolik?

Aby pozbyć się kolumny o nazwie " foo " w data.frame, Mogę zrobić: df <- df[-grep('foo', colnames(df))] Jednak po przek ... 3 <- data.table(df) df3[-grep('foo', colnames(df3))] Ale po przekonwertowaniu na obiekt data.table, to już nie działa.

Wybierz wiele kolumn w danych.tabela według ich indeksów liczbowych

Jak możemy wybrać wiele kolumn za pomocą wektora ich indeksów liczbowych (pozycji) w data.table? Tak zrobilibyśmy z data.frame: df <- data.frame(a = 1, b = 2, c = 3) df[ , 2:3] # b c # 1 2 3

Użyj wartości z poprzedniego wiersza w danych R.obliczanie tabeli

Chcę utworzyć nową kolumnę w danych.tabela obliczana na podstawie bieżącej wartości jednej kolumny i poprzedniej drugiej. Cz ... dź powinna brzmieć > DT A B C D 1: 1 10 100 NA 2: 2 20 200 210 3: 3 30 300 320 4: 4 40 400 430 5: 5 50 500 540

Podzbiór wierszy odpowiadających wartości maksymalnej według grupy wykorzystującej dane.tabela

Załóżmy, że mam data.table zawierające kilku baseballistów: library(plyr) library(data.table) bdt <- as.data.table(baseb ... t[, .SD[g == max(g)], by = id] Ale jest tylko o 30% szybszy niż plyr, co sugeruje, że prawdopodobnie nie jest idiomatyczny.

Jak zastosować tę samą funkcję do każdej określonej kolumny danych.tabela

Mam dane.tabelę, z którą chciałbym wykonać tę samą operację na niektórych kolumnach. Nazwy tych kolumn są podane w wektorze ... eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))] } Czy istnieje sposób, aby to zrobić bezpośrednio bez pętli for?

Kiedy powinienem użyć operatora:= w danych.stolik?

data.table obiekty mają teraz operator:=. Co odróżnia ten operator od wszystkich innych operatorów przydziałów? Ponadto, jakie są jego zastosowania, o ile szybciej i kiedy należy go unikać?

dplyr na danych.table, czy naprawdę używam danych.stolik?

Jeśli używam składni dplyrna szczycie datatable, czy otrzymam wszystkie korzyści związane z szybkością datatable podczas ko ... , MedianPrice = as.numeric(median(price)), Count = .N), by=cut ] [ order(-Count) ]