R - Dplyr - Как добавить вычисляемое поле на основе текущих data.frame
Я группирую фрейм данных по столбцу "месяц", а затем суммирую столбец "пользователи".
Используя этот код:
Count_Users_By_Month <- Users_By_Month %>% group_by(month) %>%
summarise(Users = length(unique(users)))
Я понимаю, что я на 100% уверен, что это правильно:
month Users
1 Diciembre 4916
2 Noviembre 3527
Вопрос 1: Как добавить столбец, показывающий изменение в "Diciembre" на основе "Noviembre"?(В процентах%).
Нужно создать столб для вариации месяц к месяцу
Формула (псевдокод) такая:
(DiciembreUsers-NoviembreUsers)/NoviembreUsers
** Конечно, значение для Noviembre будет ясным, потому что нет данных за предыдущий месяц (октябрь).
Я попробовал этот код, чтобы сделать это, но получаю ошибку:
Count_Users_By_Month <- Users_By_Month %>% group_by(month) %>%
summarise(Users = length(unique(users))) %>%
mutate(Variacion = (Count_Users_By_Month[1,2]-Count_Users_By_Month[2,2])/Count_Users_By_Month[2,2])
Ошибка: не совместим с STRSXP
** Последнее редактирование:
Проблема решена, спасибо @Khasha. Смотрите комментарии:
Изменил "лаг" на "свинец".... это сработало. Просто добавили "привести" к разделительной части, чтобы получить формулу правильно.
mutate(variation=(Users-lead(Users))/lead(Users))
1 ответ
Это исходный фрейм данных:
month Users
1 Diciembre 4916
2 Noviembre 3527
Это ответ:
Count_Users_By_Month <- Users_By_Month %>% group_by(month) %>%
summarise(Users = length(unique(users))) %>%
mutate(variation=(Users-lead(Users))/lead(Users))
Нужно выяснить, как работает "привести". Все кредиты @Khashaa, смотрите его ответ в комментариях. Просто изменили формулу, добавили "привести" в части деления, чтобы получить правильный ответ