【发布时间】:2014-11-10 09:03:45
【问题描述】:
我有两个数据框,a 和 b,都有一个“州”和“年”列(以及其他列)。我正在尝试将 VARX 的值从 b 转移到 a。我用这个:
for(i in seq_along(a)) {a$VARX[[i]]<-b$VARX[[which(b$state==a$state[[i]] & b$year==a$year[[i]])]]}
我收到此错误:
b$VARX[[which(b$state == a$state[[i]] & b$year ==中的错误: 尝试选择少于一个元素
问题似乎是a中有一些行在b中没有对应的行,所以它无法选择一个元素。在这些情况下,我如何返回 NA(所以 a$VARX[i]=NA),或者从 b 中没有相应行的所有情况中清除 a?
【问题讨论】:
-
一个可重现的例子会有所帮助。也许使用 dput() 将您的数据添加到问题中。据我所知,您想用
b中的相应记录覆盖a$VARX中的值,这些记录由两个数据帧之间的state和year匹配确定。如果是这样,使用merge()或data.table包可能会提供更简单的解决方案。