gpt4 book ai didi

R:将每个值与列中的一组先前值进行比较

转载 作者:行者123 更新时间:2023-12-04 10:17:06 25 4
gpt4 key购买 nike

问题

假设我们有这样一个数据集:

df <- data.frame(X = c(1,2,3,4,5,4,3,2,1,2,3,4))

我如何将每个值与一组以前的值进行比较,最好是在 dplyr 中?

具体例子

对于每个值,我想知道它是否大于前 4 个值中的每一个(不包括前 4 个值不存在的情况),所需输出为:

> df
X Diff
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 TRUE
6 4 FALSE
7 3 FALSE
8 2 FALSE
9 1 FALSE
10 2 FALSE
11 3 FALSE
12 4 TRUE

到目前为止已经尝试过

我可以使用 diff 函数实现与前一个值的基本比较:

df$diff <- c(NA, ifelse(diff(df$X) > 0, "TRUE", "FALSE"))
> df
X Diff
1 1 <NA>
2 2 TRUE
3 3 TRUE
4 4 TRUE
5 5 TRUE
6 4 FALSE
7 3 FALSE
8 2 FALSE
9 1 FALSE
10 2 TRUE
11 3 TRUE
12 4 TRUE

我查看了 zoo 包中的 rollmax() 函数,但找不到一种方法来限制只比较前 4 个值。

最佳答案

library(zoo)

df <- data.frame(X = c(1,2,3,4,5,4,3,2,1,2,3,4))
df %>%
mutate(diff = X > lag(rollmaxr(X, 4, fill = NA)))

X diff
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 TRUE
6 4 FALSE
7 3 FALSE
8 2 FALSE
9 1 FALSE
10 2 FALSE
11 3 FALSE
12 4 TRUE

关于R:将每个值与列中的一组先前值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091636/

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