gpt4 book ai didi

r - 如何根据条件加入和标记

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

我有一个数据框,每个 id 有 24 小时,如下所示:

library(data.table)


DT=data.table(id=c(rep(1,24),rep(2,24),rep(3,24)),
hour=c(rep(0:23,3)),
val=c(rep(c(18,36,27,18,36,39,99,99,72,81,54,72,18,9,36,27,18,90,36,27,18,45,54,63),3)))

然后我还有一个数据表,其中包含每个 id 的高峰开始和结束时间,如下所示:

c=data.table(id=c(1,2,3),start=c(3,6,9),end=c(9,12,4))

我必须在数据表 a 中附加一列作为高峰,然后标记它是否在每个 id 的高峰时间范围内。像 id 1 一样,高峰时间是 3 到 9 (3,4,5, 6,7,8,9) 因此,DT 中包含这些行的所有记录都应使用列 rush=1 进行标记,其余记录应使用 rush=0 进行标记。

我试过这样

setkey(c, start, end)
DT[,hour_replica:=hour]
result <- foverlaps(DT, c, by.x=c('hour','hour_replica'),
by.y=c('start', 'end'))

但是会报错

列开始的所有条目应该<= data.table 中列结束的相应条目

感谢任何帮助。

最佳答案

一个简单的方法可能是:

DT[c, rush := as.numeric(start <= hour & end >= hour), on="id"]

DT
# id hour val rush
# 1: 1 0 18 0
# 2: 1 1 36 0
# 3: 1 2 27 0
# 4: 1 3 18 1
# 5: 1 4 36 1
# 6: 1 5 39 1
# 7: 1 6 99 1
#.......so on

关于r - 如何根据条件加入和标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606266/

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