我试图在两个向量之间应用一个函数(比下面使用的函数更复杂,但我试图简化)。但是,我收到以下错误:
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()
答案 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
(但是,在某些情况下,当我们希望获取完整的列以进行比较时-可以使用它)