【发布时间】:2016-02-07 08:40:43
【问题描述】:
使用通用数据:
set.seed(456)
a <- sample(0:1,50,replace = T)
b <- rnorm(50,15,5)
df1 <- data.frame(a,b)
c <- seq(0.01,0.99,0.01)
d <- rep(NA, 99)
for (i in 1:99) {
d[i] <- 0.5*(10*c[i])^2+5
}
df2 <- data.frame(c,d)
对于每个df1$b,我们希望找到最近的df2$d。
然后我们创建一个新变量df1$XYZ,它采用最接近的df2$d 的df2$c 值
这个question 引导我走向data.table 图书馆。但是我不确定ddplyr和group_by是否也可以使用:
这是我的data.table 尝试:
library(data.table)
dt1 <- data.table( df1 , key = "b" )
dt2 <- data.table( df2 , key = "d" )
dt[ ldt , list( d ) , roll = "nearest" ]
【问题讨论】:
-
我没有测试过,但可能只是
setDT(df1)[df2, XYZ := i.c, on = c(b = "d"), roll = "nearest"]? -
阅读this post怎么样?
标签: r data.table dplyr