gpt4 book ai didi

r - 识别在 x 天内发生给定事件序列的记录

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

我有一个很大的data.table,结构类似于df :

library("data.table")
df <- data.frame(part = c("A", "B", "A", "C", "A", "D", "B", "D", "E"),
day = c(1, 2, 3, 4, 5, 6, 6, 7, 15),
code = c("S", "S", "P", "X", "P", "S", "P", "P", "P"))
setDT(df)
df
part day code
1: A 1 S
2: B 2 S
3: A 3 P
4: C 4 X
5: A 5 P
6: D 6 S
7: B 6 P
8: D 7 P
9: E 15 P

如何添加标记记录的列 code = S和相同的 partcode = P在随后的 3 天内?预期结果:
   part day code  flag
1: A 1 S TRUE
2: B 2 S FALSE
3: A 3 P FALSE
4: C 4 X FALSE
5: A 5 P FALSE
6: D 6 S TRUE
7: B 6 P FALSE
8: D 7 P FALSE
9: E 15 P FALSE

最佳答案

我认为这样做

df[, v := FALSE ]
df[code == "S", v := !is.na(
df[code == "P"][df[code == "S"], on=c("part", "day"), roll=-3, which=TRUE]
)]

part day code v
1: A 1 S TRUE
2: B 2 S FALSE
3: A 3 P FALSE
4: C 4 X FALSE
5: A 5 P FALSE
6: D 6 S TRUE
7: B 6 P FALSE
8: D 7 P FALSE
9: E 15 P FALSE

工作原理 !is.na(x[i, which=TRUE])告诉我们每一行是否 ix 中找到匹配项. (如果 i 找到多个匹配项,这可能会崩溃。) roll部分扩展匹配范围以涵盖就连接的最后一列而言附近的行 on .

我不确定 roll那里的值(value)是正确的,因为我从未以这种方式使用过它。

关于r - 识别在 x 天内发生给定事件序列的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772423/

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