我已经和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)