r - 如何解释来自 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()
解决方案
我们不需要map2
得到“持续时间”和“持续时间”之间的区别lead
。它是矢量化的。 map2
将循环遍历 'duration' 的每个元素,lead(duration)
其中相应的元素是不必要的
DF %>%
group_by(var1, var2) %>%
mutate(diff = duration - lead(duration))
注意:当我们DF$duration
在group_by
. 它打破了分组条件并获得了完整的数据集列。此外,在管道中,不需要dataset$columnname
. 应该是columnname
(但是,在某些情况下,当我们想要获取完整列进行比较时 - 可以使用它)
推荐阅读
- image-processing - ImageNet 分类:np.testing.assert_almost_equal(pred_probas.sum().asscalar(), 1, decimal=5)
- php - 获取 SSL 证书颁发者/主题的 PHP 正则表达式
- python - MySQLInterfaceError:无法转换 Python 类型列表
- java - Java泛型 - 不兼容的等式约束
- git - libgit2sharp usernamepasswordcredentials 似乎忽略了用户名?
- python - 我如何减去 django 中的时间日期来确定帖子的年龄?
- simulation - 在 AnyLogic 中使用代理名称作为 selectOutput 的条件
- javascript - 合并两个 JavaScript 对象和冲突的属性
- python-3.x - 无法将日期附加到文件名
- azure-devops - 通过 Azure DevOps 自定义任务查询 Azure StorageAccount blob 容器