Как интерпретировать ошибку длины столбца из ddplyr :: mutate? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь применить функцию (более сложную, чем та, которая использовалась ниже, но я пытался упростить) для двух векторов.Тем не менее, я получаю следующую ошибку:

    mutate_impl(.data, dots) : 
       Column `diff` must be length 2 (the group size) or one, not 777

Я думаю, что я могу получить эту ошибку, потому что разница между строками приводит к тому, что на несколько строк, которые я читаю, разница между строками на одну строку меньше, чем у исходного кадра данных.Однако, когда я последовал этому совету и попытался добавить вектор для добавления 0 / NA в последнюю строку, я получил еще одну ошибку.Правильно ли я по крайней мере определил источник ошибки?Идеи?Спасибо.

Оригинальный код:

     diff_df <- DF %>%
       group_by(DF$var1, DF$var2) %>%
       mutate(diff = map2(DF$duration, lead(DF$duration), `-`)) %>%
       as.data.frame()

1 Ответ

0 голосов
/ 08 октября 2018

Нам не нужно map2, чтобы получить разницу между «продолжительностью» и lead «продолжительностью».Это векторизация.map2 будет циклически проходить через каждый элемент «duration» с соответствующим элементом lead(duration), который не нужен

DF %>% 
    group_by(var1, var2) %>% 
    mutate(diff = duration - lead(duration))

ПРИМЕЧАНИЕ: Когда мы извлекаем столбец с DF$duration после group_by.это нарушает условие группировки и получает полный столбец набора данных.Также в трубе нет необходимости dataset$columnname.Это должно быть columnname (Однако в некоторых ситуациях, когда мы хотим получить полный столбец для некоторого сравнения - его можно использовать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...