Я уже некоторое время работаю с magrittr
и dplyr
и люблю конвейеры.Однако в моем текущем скрипте функция group_by не группируется, когда я использую ее для своих собственных функций:
Фрейм данных выглядит примерно так, только больше:
df <- data.frame(Participant = c(rep("A",10), rep("B", 10)), Speech = c(1,1,1,1,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0))
У меня естьнесколько функций, которые мне нужны для очистки этих данных, и я обнаружил, что большинство моих функций не группируются по участникам, а используют весь фрейм данных.Одной из этих функций является следующее:
segment_finder <- function(kolin){
kolom <- kolin %>% pull(Speech)
part <- kolin %>% pull(Participant) %>% as.character() %>% first()
vorige <- NA
leng <- 0
out <- data.frame(segment = numeric(), lengte = numeric())
for (m in kolom){
if(is.na(vorige)){
vorige <- m
leng %<>% +1
}
else if(m != vorige) {
out %<>% bind_rows(data.frame(segment = vorige, lengte = leng))
leng <- 1
vorige <- m
}
else {
leng %<>% + 1
}
}
out %<>% bind_rows(data.frame(segment = m, lengte = leng))
out %<>% mutate(Participant = part)
return(out)
}
Использование следующего кода работает, поэтому я нашел способ обойти это, но он продолжает меня беспокоить, что конвейер этого не делает.Я попытался загрузить последний dplyr, но это не работает.
df3 <- df %>% plyr::ddply("Participant", segment_finder)