Вопросы с тегом «data.table»

Пакет R data.table - это расширение data.frame, созданное для быстрого анализа данных в памяти. Используйте тег dt для пакета DataTables с Shiny (DT).

760
data.table vs dplyr: один может делать что-то хорошо, другой - плохо или плохо?

обзор Я относительно знаком с data.table, не так много с dplyr. Я прочитал несколько dplyrвиньеток и примеров, которые всплыли на SO, и до сих пор мои выводы таковы: data.tableи dplyrсопоставимы по скорости, за исключением случаев, когда существует много (то есть> 10-100 КБ) групп, и при...

196
Как удалить столбец по имени в data.table?

Чтобы избавиться от столбца с именем "foo" в a data.frame, я могу сделать: df <- df[-grep('foo', colnames(df))] Однако после dfпреобразования в data.tableобъект просто невозможно удалить столбец. Пример: df <- data.frame(id = 1:100, foo = rnorm(100)) df2 <- df[-grep('foo', colnames(df))] #...

194
Понимание того, когда data.table является ссылкой на (против копии) другого data.table

У меня небольшие проблемы с пониманием свойств передачи по ссылке data.table. Некоторые операции, кажется, «ломают» ссылку, и я хотел бы точно понять, что происходит. При создании data.tableиз другого data.table(через <-, затем обновляя новую таблицу :=, исходная таблица также изменяется. Это...

173
Что означает .SD в data.table в R

.SDвыглядит полезным, но я действительно не знаю, что я делаю с этим. Что это значит? Почему существует предыдущий период (полная остановка). Что происходит, когда я использую это? Я прочитал: .SDэто data.tableсодержащее подмножество xданных «S для каждой группы, за исключением столбца (ов) группы....

160
Почему слияния панд в python быстрее, чем слияния data.table в R в 2012 году?

Недавно я наткнулся на библиотеку pandas для python, которая в соответствии с этим тестом выполняет очень быстрое слияние в памяти. Это даже быстрее, чем пакет data.table в R (мой язык для анализа). Почему pandasтак быстрее чем data.table? Это из-за присущего скорости питона преимущество над R, или...

154
Агрегировать / суммировать несколько переменных на группу (например, сумма, среднее)

Из кадра данных, есть простой способ агрегации ( sum, mean, maxодновременно с) и др несколько переменных? Ниже приведены некоторые примеры данных: library(lubridate) days = 365*2 date = seq(as.Date("2000-01-01"), length = days, by = "day") year = year(date) month = month(date) x1 =...

150
Замена NA на последнее значение, отличное от NA

В data.frame (или data.table) я хотел бы «заполнить вперед» NA ближайшим предыдущим значением, отличным от NA. Вот простой пример использования векторов (вместо a data.frame): > y <- c(NA, 2, 2, NA, NA, 3, NA, 4, NA, NA) Мне нужна функция, fill.NAs()которая позволяет мне создавать yyтакие,...

150
Самый быстрый способ заменить NA в большом data.table

У меня есть большая таблица данных , со многими пропущенными значениями, разбросанными по строкам ~ 200 тыс. И 200 столбцам. Я хотел бы как можно более эффективно перекодировать эти значения NA в нули. Я вижу два варианта: 1: преобразовать в data.frame и использовать что-то вроде этого 2: какая-то...

150
Как удалить строку по ссылке в data.table?

Мой вопрос связан с назначением по ссылке, а не копированием в data.table. Я хочу знать, если можно удалить строки по ссылке, аналогично DT[ , someCol := NULL] Я хочу знать о DT[someRow := NULL, ] Я думаю, есть веская причина, почему эта функция не существует, поэтому, возможно, вы могли бы просто...

135
Почему rbindlist «лучше», чем rbind?

Я просматриваю документацию data.tableи также заметил из некоторых разговоров здесь о SO, который rbindlistдолжен быть лучше, чем rbind. Я хотел бы знать, почему rbindlistлучше rbindи в каких сценариях rbindlistдействительно лучше rbind? Есть ли какое-то преимущество с точки зрения использования...

130
Назначьте несколько столбцов, используя: = в data.table, по группе

Как лучше всего назначить несколько столбцов с помощью data.table? Например: f <- function(x) {c("hi", "hello")} x <- data.table(id = 1:10) Я бы хотел сделать что-то подобное (конечно, это неверный синтаксис): x[ , (col1, col2) := f(), by = "id"] И чтобы расширить это, у меня может быть много...

125
Сортировка строк в data.table в порядке убывания по строковому ключу `order (-x, v)` дает ошибку в data.table 1.9.4 или ранее

Скажем , у меня есть следующие data.tableв R: library(data.table) DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9) Я хочу упорядочить его по двум столбцам (например, столбцам xи v). Я использовал это: DT[order(x,v)] # sorts first by x then by v (both in ascending order) Но теперь я...

123
Почему соединение X [Y] таблиц data.tables не допускает полное внешнее соединение или левое соединение?

Это немного философский вопрос о синтаксисе соединения data.table. Я нахожу все больше и больше применений для data.tables, но все еще учусь ... Формат соединения X[Y]для data.tables очень лаконичен, удобен и эффективен, но, насколько я могу судить, он поддерживает только внутренние соединения и...

118
Преобразование классов столбцов в data.table

У меня проблема с использованием data.table: как преобразовать классы столбцов? Вот простой пример: с data.frame у меня нет проблем с его преобразованием, с data.table я просто не знаю как: df <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10)) #One way:...

113
Какова цель установки ключа в data.table?

Я использую data.table, и есть много функций, которые требуют от меня установки ключа (например X[Y]). Таким образом, я хочу понять, что делает ключ, чтобы правильно устанавливать ключи в моих таблицах данных. Я прочитал один источник ?setkey. setkey()сортирует data.tableи отмечает его как...

103
Очистка значений Inf из фрейма данных R

В R у меня есть операция, которая создает некоторые Infзначения при преобразовании фрейма данных. Я хотел бы превратить эти Infценности в NAценности. Код, который у меня есть, работает медленно для больших данных, есть ли более быстрый способ сделать это? Скажем, у меня есть следующий фрейм...

97
Какой самый быстрый способ объединить / объединить data.frames в R?

Например (не уверен, что это наиболее репрезентативный пример): N <- 1e6 d1 <- data.frame(x=sample(N,N), y1=rnorm(N)) d2 <- data.frame(x=sample(N,N), y2=rnorm(N)) Вот что у меня есть на данный момент: d <- merge(d1,d2) # 7.6 sec library(plyr) d <- join(d1,d2) # 2.9 sec...

93
Получение лучших значений по группе

Вот пример фрейма данных: d <- data.frame( x = runif(90), grp = gl(3, 30) ) Я хочу, чтобы подмножество dсодержало строки с 5 верхними значениями xдля каждого значения grp. Используя base-R, мой подход будет примерно таким: ordered <- d[order(d$x, decreasing = TRUE), ] splits <-...