Я пытаюсь перейти от plyr к dplyr. Тем не менее, я все еще не могу понять, как вызвать собственные функции в цепочке функции dplyr.передать сгруппированные данные в собственную функцию в dplyr
У меня есть фрейм данных с факторизованной переменной ID и переменной порядка. Я хочу разбить фрейм по идентификатору, заказать его по переменной порядка и добавить последовательность в новый столбец.
Мои plyr функции выглядит следующим образом:
f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- ddply(data, .(ID_variable), f)
В dplyr я, хотя это должно выглядеть примерно так
f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- data %>% group_by(ID_variable) %>% f
Может кто-нибудь сказать мне, как изменить мой dplyr вызов успешно пройти мой собственный функции и получить ту же функциональность, что и моя функция plyr?
EDIT: Если я использую формулу dplyr, как описано здесь, она передает объект в f. Однако, хотя plyr, кажется, передает несколько разных таблиц (разделенных переменной ID), dplyr не передает одну таблицу для каждой группы, а таблицу ENTIRE (как некоторый объект dplyr, где аннотируются группы), поэтому, когда я привязываю Переменная опыта добавляет счетчик от 0 до длины всей таблицы вместо отдельных групп.
Я нашел способ, чтобы получить такую же функциональность в dplyr использовании этого подхода:
data <- data %>%
group_by(ID_variable) %>%
arrange(ID_variable,order_variable) %>%
mutate(Experience = 0:(n()-1))
Однако, я все еще был бы заинтересован, чтобы узнать, как передать сгруппированных переменные разделены на различные таблицы, чтобы собственные функции в dplyr ,
Какую версию R и 'dplyr' вы используете? Это не привело к ошибке для меня. – nrussell
Я думаю, нам нужен воспроизводимый набор данных. @nrussell Я не думаю, что проблема связана с ошибкой, а не с ожидаемым/ожидаемым результатом. Я нашел этот вопрос из-за моей собственной аналогичной проблемы. Я сделал что-то очень похожее 'd%>% group_by (var1, var2)%>% summary (blah = f (.))'. Я получаю возвращаемый массив данных группы, но каждая запись для 'blah' идентична. Я думаю, что это так, как описано выше; по какой-то причине вся df передается, а не сгруппированные «куски», подобные «plyr». – Hendy