合并两个数据集&根据R中的一列填充多个字段

时间:2018-02-22 18:22:27

标签: r loops merge row

好的所以我有两个数组/表,我正在合并TIMEDATE。 Long Array

Long

我正在使用此代码:

Long_LA <- merge(x = LongArray,y = Long,by="TIMEDATE", all.x = TRUE)

这是两个合并在一起的样子: After Merge

现在......我正在尝试根据SegmentDuration_Seconds为X行添加基于“Segment Activity”的Activity代码。

我知道在Excel中我只是填写,我知道在R中执行此功能的能力,但我无法让它工作。 那里有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用非equi连接data.table包可以更容易地完成此操作,如下所示。内联更多解释

#create the end timedate as well before non-equi join
Long[, ENDTIMEDATE := STARTTIMEDATE + SEGMENTDURATION_SECONDS]

#non-equi joins
LongArray[Long, Activity_Code := SEGMENTACTIVITY, on=.(TIMEDATE >= STARTTIMEDATE, TIMEDATE <= ENDTIMEDATE)]

数据:

library(data.table)
LongArray <- data.table(TIMEDATE=seq(as.POSIXct("2018-02-15"), by="1 min", length.out=14), 
    Order=1:14)
Long <- data.table(STARTTIMEDATE=as.POSIXct("2018-02-15"), SEGMENTACTIVITY=1, SEGMENTDURATION_SECONDS=6300)