数据集是:
col_1,col_2,value
8521,13394,24
8521,14353,15
...
1112074,1112073,52
我希望在值列中查找前两列的数字。 我知道使用data.frame或数组可以解决这个问题。但col_1或col_2中的最大值是如此之大,以至于我无法构建1112074 * 3 data.frame。 如何解决这个问题?
答案 0 :(得分:4)
如果我理解正确,您需要在值列中查找给定前两列数字的数字
这里使用简单的data.frame和循环函数
的一种方式dd<-data.frame(
col_1 = c(8521, 8521, 1112074),
col_2 = c(13394, 14353, 1112073),
value = c(24,15,52)
)
getval<-function(c1,c2, data=dd) {
data$value[data$col_1==c1 & data$col_2==c2]
}
getval(8521, 14353)
# [1] 15
不幸的是,这个程序并不快。如果您打算经常这样做,可以考虑使用data.table
库,它允许您索引表格以便更快地查找
library(data.table)
dt<-data.table(
col_1 = c(8521, 8521, 1112074),
col_2 = c(13394, 14353, 1112073),
value = c(24,15,52)
)
setkey(dt, col_1, col_2)
getval<-function(c1,c2, data=dt) {
dt[.(c1,c2)][, value]
}
getval(8521, 14353)
# [1] 15