【发布时间】:2020-05-13 01:04:40
【问题描述】:
我有两个数据框。
dfx <- data.frame(ID=c("A", "A", "A", "B", "B", "B", "B", "B", "B"),
a=c( 0.1, 2.1, 1.5, 1.8, 8, 1, 1.4, 39, 100))
ID a
1 A 0.1
2 A 2.1
3 A 1.5
4 B 1.8
5 B 8.0
6 B 1.0
7 B 1.4
8 B 39.0
9 B 100.0
dfy<-data.frame(ID=c("A", "A", "A", "B", "B", "C", "C", "D"),
aa=c(0.5, 1, 2, 5, 10, 20, 40, 80),
bb=c(1, -1, 20, -5, 10, 20, 40, 80))
ID aa bb
1 A 0.5 1
2 A 1.0 -1
3 A 2.0 20
4 B 5.0 -5
5 B 10.0 10
6 C 20.0 20
7 C 40.0 40
8 D 80.0 80
我正在寻找一种在 dfx 中创建新变量的方法,使用每行中的 ID 和“a”中的值来查找特定于 ID 的“bb”,使用“aa”相对中的最接近值为“一”。例如, 对于第一行,返回的答案将为 1(“aa”中最接近 a = 0.1 的“A”值是 0.5,对应于 bb = 1)。第二行的答案是 20。
我已经看到很多关于 sapply 和 which.min 的示例,但是我找不到任何可以帮助我解决此类问题的内容。有什么建议吗?
【问题讨论】:
标签: indexing match lookup sapply closest