gpt4 book ai didi

r - 在 R 中,如果值与先前或后续值不同,如何添加 TRUE/FALSE 列?

转载 作者:行者123 更新时间:2023-12-04 11:58:05 26 4
gpt4 key购买 nike

示例数据:

df <- data.frame(
time = c(1, 2, 3, 4, 5, 6, 7),
status = c("good", "good", "good", "bad", "good", "good", "good")
)

输出:

  time status
1 1 good
2 2 good
3 3 good
4 4 bad
5 5 good
6 6 good
7 7 good

如果 status 与上方或下方的行不同,我想添加一个新列 statuschange。输出看起来像这样:

  time status statuschange
1 1 good NA
2 2 good TRUE
3 3 good FALSE
4 4 bad FALSE
5 5 good FALSE
6 6 good TRUE
7 7 good NA

我觉得有很多方法可以做到这一点,但我还没有弄明白。感谢任何帮助!

最佳答案

您可以应用diff 来查看两个条目是否相同。您需要其中两个差异,以查看元素周围的两个条目是否相同:

> !(c(NA, diff(as.numeric(x$status))) | c(rev(diff(as.numeric(rev(x$status)))), NA))
[1] NA TRUE FALSE FALSE FALSE TRUE NA

第一个表达式告诉先验元素是否不同:

> c(NA, diff(as.numeric(x$status)))
[1] NA 0 0 -1 1 0 0

第二个判断后面的元素是否不同:

> c(rev(diff(as.numeric(rev(x$status)))), NA)
[1] 0 0 1 -1 0 0 NA

“或”操作 | 返回非零的 TRUE,这意味着前导或后继元素不同,因此我们然后用前导 反转结果!

关于r - 在 R 中,如果值与先前或后续值不同,如何添加 TRUE/FALSE 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756752/

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