如何从ddplyr :: mutate解释列长度错误?

时间:2018-10-08 20:35:13

标签: r dataframe dplyr mutate

我试图在两个向量之间应用一个函数(比下面使用的函数更复杂,但我试图简化)。但是,我收到以下错误:

    mutate_impl(.data, dots) : 
       Column `diff` must be length 2 (the group size) or one, not 777

我想我可能会收到此错误,因为根据我阅读的某些帖子,行之间的差异导致比原始数据帧少一行。但是,当我遵循该建议并尝试添加向量以在最后一行添加0 / NA时,我收到了另一个错误。我是否至少可以正确识别错误的来源?有想法吗?谢谢。

原始代码:

     diff_df <- DF %>%
       group_by(DF$var1, DF$var2) %>%
       mutate(diff = map2(DF$duration, lead(DF$duration), `-`)) %>%
       as.data.frame()

1 个答案:

答案 0 :(得分:1)

我们不需要map2来获得“持续时间”和lead的“持续时间”之间的区别。它是矢量化的。 map2将遍历'duration'的每个元素与lead(duration)的对应元素,这是不必要的

DF %>% 
    group_by(var1, var2) %>% 
    mutate(diff = duration - lead(duration))

注意:当我们在DF$duration之后用group_by提取列时。它打破了分组条件并获得了完整的数据集列。另外,在管道中,不需要dataset$columnname。应当为columnname(但是,在某些情况下,当我们希望获取完整的列以进行比较时-可以使用它)