我有两个dataframes,就像这些:加快数据帧匹配
data = data.frame(data=cbind(1:12,rep(c(1,2),6),rep(c(1,2,3),4)))
colnames(data)=c('v','h','c')
lookup = data.frame(data=cbind(c(rep(1,3),rep(2,3)),rep(c(1,2,3),2),21:26))
colnames(lookup)=c('h','c','t')
我想从数据$ v,其中H和C柱的比赛中减去查找$吨。
我觉得像这样的工作
data$v-lookup$t[lookup$h==data$h&lookup$c==data$c]
但不会奇迹般地知道,我想通过
我终于实现了这个
myt = c()
for(i in 1:12) {
myt[i] = lookup$t[lookup$h==data$h[i]&lookup$c==data$c[i]]
}
数据行隐式迭代
这工作正常,但我希望有人可以建议一个更合理的方式,不涉及循环。
在现实中,他们都是字符串,因为我在创建数据帧可怕。谢谢! – ansate
@ansate - FWIW,你可以用你的'stringsAsFactors'选项和'read.table'选项来修改默认情况下的字符串读入。默认值应该是读取字符串作为因素。 –