【发布时间】:2020-08-06 11:38:12
【问题描述】:
我的数据由小标题中的单个向量/列组成:
my_tibble <- tibble(score = c(1,2,3,4,9,8,7,6,5,4))
对于 my_tibble$score 的每一行,我想计算与同一列中最大“前导”元素的差异。这个新列应称为“差异”。例如,第一行的差异应该是 1 - 9,而第五行应该是 9 - 8,最后一行将变为 NA,因为没有值落后/低于 4。
最后,新的 tibble 应该是这样的:
score | difference
<dbl> <dbl>
1 -8
2 -7
3 -6
4 -5
9 1
8 1
7 1
6 1
5 1
4 NA
我想使用 dplyr 来实现这一点,到目前为止,我已经尝试了许多 mutate 的变体,比如
my_tibble %>%
mutate(difference = score[which(score > score)])
希望找到某种方式,使 which 函数中的第二个“分数”指代正在变异的当前行。然而,经过数小时的尝试和拼命在网上寻找解决方案,我没有成功。
我找到的最接近的是dplyr: Summing n leading values,但这仍然给我留下了一个问题,即我想要所有前导值的最大前导值的差异,而不仅仅是最接近的 n 个前导值。
非常感谢帮助和/或推荐到之前已回答或解决的任何地方!
【问题讨论】: