Tag: data.table

эффективные последовательные операции на data.table

Мне нужно найти поровну минимум (+60) относительно большой data.frame (~ 250 000 x 3) (или я могу эквивалентно работать на xts ). set.seed(1000) my.df <- sample(1:5, 250000*3, replace=TRUE) dim(my.df) <- c(250000,3) my.df <- as.data.frame(my.df) names(my.df) <- c("A", "B", "C") Кадр данных my.df выглядит так: > head(my.df) ABC 1 2 5 2 2 4 5 5 […]

Выполните полусоединение с data.table

Как выполнить полусоединение с data.table? Полусоединение подобно внутреннему соединению, за исключением того, что оно возвращает только столбцы X (а не те, что у Y), и не повторяет строки X, чтобы они соответствовали строкам Y. Например, следующий код выполняет внутренний присоединиться: x <- data.table(x = 1:2, y = c("a", "b")) setkey(x, x) y <- data.table(x = […]

Удаление нескольких столбцов из R data.table с параметром для удаления столбцов

Я пытаюсь манипулировать несколькими data.tables аналогичным образом и хотел бы написать функцию для выполнения этого. Я хотел бы передать параметр, содержащий список столбцов, в котором выполнялись бы операции. Это отлично работает, когда векторное объявление столбцов является левой стороной оператора: =, но не если оно объявлено ранее (или передано в функцию). Следующий код показывает проблему. dt […]

R data.table применяет функцию к строкам с использованием столбцов в качестве аргументов

У меня есть следующие data.table x = structure(list(f1 = 1:3, f2 = 3:5), .Names = c(“f1”, “f2”), row.names = c(NA, -3L), class = c(“data.table”, “data.frame”)) Я хотел бы применить функцию к каждой строке data.table . Функция func.test использует args f1 и f2 и делает что-то с ней и возвращает вычисленное значение. Предположим (в качестве примера) […]

Динамические имена столбцов в data.table

Я пытаюсь добавить столбцы в data.table , где имена являются динамическими. Кроме того, мне нужно использовать аргумент by при добавлении этих столбцов. Например: test_dtb <- data.table(a = sample(1:100, 100), b = sample(1:100, 100), id = rep(1:10,10)) cn <- parse(text = "blah") test_dtb[ , eval(cn) := mean(a), by = id] # Error in `[.data.table`(test_dtb, , `:=`(eval(cn), […]

Форсировать векторное кодирование символов от «неизвестного» до «UTF-8» в R

У меня проблема с несогласованным кодированием символьного вектора в R. Текстовый файл, который я прочитал из таблицы, закодирован (через Notepad++ ) в UTF-8 (я тоже пытался использовать UTF-8 without BOM ). Я хочу прочитать таблицу из этого текстового файла, преобразовать его в data.table , установить key и использовать двоичный поиск. Когда я попытался сделать это, […]

Элегантное назначение нескольких столбцов в data.table с помощью lapply ()

Я пытаюсь найти элегантный способ использования := присваивания для замены многих столбцов сразу в data.table путем применения общей функции. Типичным применением этого может быть применение строковой функции (например, gsub ) ко всем столбцам символов в таблице. Нетрудно расширить способ data.frame сделать это на data.table , но я ищу метод, совместимый с методом data.table . Например: […]

Подсчитайте количество записей и создайте номер строки в каждой группе в таблице данных.

У меня есть следующие данные.table set.seed(1) DT <- data.table(VAL = sample(c(1, 2, 3), 10, replace = TRUE)) VAL 1: 1 2: 2 3: 2 4: 3 5: 1 6: 3 7: 3 8: 2 9: 2 10: 1 В каждом номере VAL я хочу: Подсчитайте количество записей / строк Создайте индекс строки (счетчик) первого, второго, […]

Как использовать data.table внутри функций и циклов?

Оценивая полезность data.table (vs. dplyr ), критический фактор – это способность использовать его внутри функций и циклов. Для этого я изменил fragment кода, использованный в этом сообщении: data.table vs dplyr: можно ли что-то сделать хорошо, а другое не может или плохо? так что вместо жестко закодированных имен переменных набора данных («вырезать» и «ценовые» переменные набора […]

Большие целые числа в data.table. Группировка результатов различна в 1.9.2 по сравнению с 1.8.10

Недавно я обновил data.table с 1.8.10 до 1.9.2, и я обнаружил следующее различие между двумя версиями при группировке по большим целым числам. Есть ли параметр, который мне нужно изменить в 1.9.2, чтобы первый из следующих двух операторов группы работал так же, как и в 1.8.10 (и я полагаю, что 1.8.10 – это правильное поведение)? Кроме […]

Давайте будем гением компьютера.