R:使用自己的功能时,group_by不分组

时间:2018-12-19 16:13:12

标签: r

我已经和magrittrdplyr一起工作了一段时间了,就像管道一样。但是,在我当前的脚本中,当我将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)

0 个答案:

没有答案