gpt4 book ai didi

r - 具有变量 n 的滞后函数

转载 作者:行者123 更新时间:2023-12-02 03:32:35 24 4
gpt4 key购买 nike

我在使用 dplyr 中的 lag 函数时遇到一些问题。这是我的数据集。

ID <- c(100, 100, 100, 200, 200, 300, 300)
daytime <- c("2010-12-21 06:00:00", "2010-12-21 09:00:00", "2010-12-21 13:00:00 ", "2010-12-23 23:00:00", "2010-12-24 02:00:00", "2010-12-25 19:00:00", "2010-12-31 08:00:00")
lagfirstvisit <- c(0, 0, 2, 0, 1, 0, 0)
table <- cbind(ID, daytime, lagfirstvisit)
table <- as.data.frame(table)
table$daytime <- as.POSIXct(table$daytime)

我的目标是生成一个新列,其中变量 daytime 的滞后量为 lagfirstvisit 列中所示的数字。即,如果 lagfirstvisit == 2,我需要特定 ID 的 lag2 daytime 值。如果lagfirstvisit == 0,则意味着保留观察行的原始daytime值。

我的预期结果如下:

ID <- c(100, 100, 100, 200, 200, 300, 300)
daytime <- c("2010-12-21 06:00:00", "2010-12-21 09:00:00", "2010-12-21 13:00:00 ", "2010-12-23 23:00:00", "2010-12-24 02:00:00", "2010-12-25 19:00:00", "2010-12-31 08:00:00")
lagfirstvisit <- c(0, 0, 2, 0, 1, 0, 0)
result <- c("2010-12-21 06:00:00", "2010-12-21 09:00:00", "2010-12-21 06:00:00", "2010-12-23 23:00:00", "2010-12-23 23:00:00", "2010-12-25 19:00:00", "2010-12-31 08:00:00")
table.results <- cbind(ID, daytime, lagfirstvisit, result)

目前,我使用的代码是:

table <- table %>%  
group_by(ID) %>%
mutate(result = lag(as.POSIXct(daytime, format="%m/%d/%Y %H:%M:%S", tz= "UTC"), n = as.integer(lagfirstvisit)))

但是,我收到错误:

Error in mutate_impl(.data, dots) : Evaluation error: n must be a non-negative integer scalar, not integer of length 3.

有人知道如何解决这个问题吗?非常感谢!

最佳答案

table.results %>%
group_by(ID) %>%
mutate(
result2=mapply(`[`, list(day), row_number() - lagfirstvisit)
)
# A tibble: 7 x 5
# Groups: ID [3]
ID day lagfirstvisit result result2
<dbl> <dbl> <dbl> <dbl> <dbl>
1 100. 21. 0. 21. 21.
2 100. 22. 0. 22. 22.
3 100. 23. 2. 21. 21.
4 200. 12. 0. 12. 12.
5 200. 13. 1. 12. 12.
6 300. 19. 0. 19. 19.
7 300. 22. 0. 22. 22.

关于r - 具有变量 n 的滞后函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51396301/

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