首页 > 解决方案 > 如何解释来自 ddplyr::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()

标签: rdataframedplyr

解决方案


我们不需要map2得到“持续时间”和“持续时间”之间的区别lead。它是矢量化的。 map2将循环遍历 'duration' 的每个元素,lead(duration)其中相应的元素是不必要的

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

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


推荐阅读