gpt4 book ai didi

r - 在数据框中查找连续值

转载 作者:行者123 更新时间:2023-12-01 09:18:33 27 4
gpt4 key购买 nike

我有一个数据框。我希望检测连续数字并将新列填充为 1 或 0。

  ID Val
1 a 8
2 a 7
3 a 5
4 a 4
5 a 3
6 a 1

预期输出

  ID Val  outP
1 a 8 0
2 a 7 1
3 a 5 0
4 a 4 1
5 a 3 1
6 a 1 0

最佳答案

您可以将 diff 函数与 abs 结合使用,并查看结果是 1 还是其他值:

d$outP <- c(0, abs(diff(d$Val)) == 1)

给出:

> d
ID Val outP
1 a 8 0
2 a 7 1
3 a 5 0
4 a 4 1
5 a 3 1
6 a 1 0

如果您只想考虑递减的连续值,您可以使用:

c(0, diff(d$Val) == -1)

当您想为每个 ID 执行此操作时,您也可以在 base R 中或使用 dplyr 执行此操作:

# base R
d$outP <- ave(d$Val, d$ID, FUN = function(x) c(0, abs(diff(x)) == 1))

# dplyr
library(dplyr)
d %>%
group_by(ID) %>%
mutate(outP = c(0, abs(diff(Val)) == 1))

关于r - 在数据框中查找连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com