У меня большой набор данных, который я пытаюсь привести в порядок с помощью dtplyr. Он состоит из большого числа (> 1000) пар дата-значение для различных местоположений. Оригинал использует pivot_longer, который отлично работает в dplyr, но выдает ошибку в dtplyr. Есть ли способ исправить это, поддерживая преимущества производительности dtplyr?
Это работает
library(tidyverse)
library(dtplyr)
my_data_tb <- tribble(
~`date-A`, ~`value-A`, ~`date-B`, ~`value-B`,
"date1", 1, "date2", 2,
"date2", 1, "date3", 2
)
my_data_tb %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)
, но это дает ошибку:
my_data_dt <- as.data.table(my_data_tb)
my_data_dt <- lazy_dt(my_data_dt)
my_data_dt %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)
Сообщение об ошибке is:
Ошибка: Невозможно поместить элементы, которые не существуют. x Места 1 и 2 не существуют. Есть только 0 элементов. Запустите rlang::last_error()
, чтобы увидеть, где произошла ошибка. Дополнительно: предупреждающее сообщение: Ожидается 2 шт. Недостающие фрагменты заполнены NA
в 7 рядов [1, 2, 3, 4, 5, 6, 7]. rlang::last_error()
Ошибка: внутренняя ошибка: данные трассировки не квадратные.
Кроме того, это также работает, но я думаю, что он теряет прирост производительности dtplyr:
my_data_dt %>%
as_tibble() %>%
pivot_longer(
cols = everything(),
names_to = c(".value", "grid_square"),
names_sep = "-"
)