Я пытаюсь:
- рассчитать разницу в продолжительности вызовов между полицейскими подразделениями, отвечающими на один и тот же вызов
- определить самую большую продолжительность среди группы вызовов с одним и тем же вызовомID
- в порядке убывания продолжительности
Мои шаги для этого приведены в фрагментах кода ниже.
Сначала я располагаю в порядке убывания по идентификатору (несколько вызовов с одним и тем же идентификатором), а затем упорядочиваю его по продолжительности вызова в часах (по убыванию).
Затем я превращаю свой data.frame в data.table.
Затем примените последовательности (по убыванию) по длительности.
call_duration_diff_by_unit[, duration_seq := seq(CALL_DURATION_HOURS), by = c("ID")]
Вот где возникает проблема: я получаю сообщение об ошибке
"Ошибка в [.data.table
(call_duration_diff_by_unit,, :=
(duration_seq,: поставляются 2 элемента, которые должны быть назначены группе 1 размера 1 в столбце duration_seq. Длина RHS должна быть либо 1 (допустимы отдельные значения)) или точно соответствует длине LHS. Если вы хотите «переработать» RHS, пожалуйста, явно используйте rep (), чтобы сделать это понятным для читателей вашего кода. "
Единственное объяснение этой ошибкиЯ обнаружил, что был специфичен для уникального пакета, который я не использую. Я понимаю концепцию «переработки» сейчас, но не уверен, как это применимо к этому сценарию ... нет двух векторов с различной длиной.
Может ли R неправильно прочитать часть by = c("ID")
в качестве второго ввода?
call_duration_diff_by_unit <- cad_cfs_data %>%
arrange(desc(ID), desc(CALL_DURATION_HOURS))
call_duration_diff_by_unit <-
data.table(call_duration_diff_by_unit)
call_duration_diff_by_unit[, duration_seq := seq(CALL_DURATION_HOURS), by = c("ID")]
Я ожидал, что он создаст уникальный числовой идентификатор (назначая 1 самой длинной продолжительности) для каждой группы уникального вызоваИдентификаторыtead, я получаю ошибку, и она не сохраняет переменную "duration_seq" для использования позже в коде.