R data.table滚动连接“mult”未按预期工作
我有两个data.frames,每个都有一个时刻序列.我的方针是行使df2的时刻序列来标志df1中最靠近的时刻戳. df2中的每个时刻戳只应在df1中标志一个时刻戳! dates1 <- as.POSIXct(c("2015-10-26 12:00:00","2015-10-26 13:00:00","2015-10-26 14:00:00")) values1 <- c("a","b","c") dates2 <- as.POSIXct(c("2015-10-26 12:05:00","2015-10-26 13:55:00")) values2 <- c("A","C") df1 <- data.frame(dates1,values1) df2 <- data.frame(dates2,values2) 祈望的功效: dates2 values2 values1 1: 2015-10-26 12:00:00 A a 2: 2015-10-26 13:00:00 NA b 3: 2015-10-26 14:00:00 C c 为了实现这一点,我将data.frames转换为data.tables并行使转动毗连“最近”,如下所示: dt1 <- data.table(df1) dt2 <- data.table(df2) setkey(dt1,"dates1") setkey(dt2,"dates2") dt3 <- dt2[dt1,roll = "nearest"] dates2 values2 values1 1: 2015-10-26 12:00:00 A a 2: 2015-10-26 13:00:00 A b 3: 2015-10-26 14:00:00 C c 值2“A”行使两次,一次用于12:00时刻戳,一次用于13:00.我但愿每个value2只行使一次,并查阅data.table手册我但愿行使选项mult =“first”来办理这个题目. dt3 <- dt2[dt1,roll = "nearest",mult = "first"] 这导致沟通的输出,“A”行使两次.我的错误在那边? 办理要领当运行dt2 [dt1,roll =“nearest”]时,你根基上是说“行使键将df2中的行按照最近的毗连返回到dt1中的每一行.以是> dt2中第一行中的dates2最靠近dt1中第一行中的dates1 因此, dt2[dt1,roll = "nearest"] # dates2 values2 values1 # 1: 2015-10-26 12:00:00 A a # 2: 2015-10-26 13:00:00 A b # 3: 2015-10-26 14:00:00 C c 这是来自dt1的全部行以及来自dt2的毗连值2. 相反,我们但愿以相反的方法插手,即“行使密钥按照dt2中每行的最近毗连从dt2中提取值2,并更新dt1中的匹配行”,即 dt1[dt2,values2 := i.values2] dt1 # dates1 values1 values2 # 1: 2015-10-26 12:00:00 a A # 2: 2015-10-26 13:00:00 b NA # 3: 2015-10-26 14:00:00 c C 一些特另外声名 >您不必要先包装到data.frame然后再包装到data.table,您只必要执行dt1< - data.table(dates1,values1)等. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |