【发布时间】:2016-02-26 02:07:20
【问题描述】:
我是 R 新手。
我有一个表,其中包含一些我想从参考表中更新的缺失数据。
样本数据表:
df1=data.frame(id=c(1:5),dob=as.Date(c("1/1/2001"
,"2/2/2002",NA,NA,NA),"%m/%d/%Y"),other_data=paste0("data",seq(1:5)))
示例查找表:
bd_ref<-data.frame(id=c(1:100),dob=as.Date(rep("1/1/1999"),"%m/%d/%Y"))
结果应该是:
id dob other_data
1 1 2001-01-01 data1
2 2 2002-02-02 data2
3 3 1999-01-01 data3
4 4 1999-01-01 data4
5 5 1999-01-01 data5
我首先确定了丢失的数据,然后根据这个答案Simple lookup to insert values in an R data frame尝试使用qdapTools包中的lookup函数如下:
df1[is.na(df1$dob),"dob"]
但得到了错误:
Error in as.Date.numeric(value) : 'origin' must be supplied
看起来df1[is.na(df1$dob),"id"] %l% d_ref[,c("id","dob")] 的结果不是日期而是负数
[1] -719144 -719144 -719144
这是解决这个问题的正确方法吗?如果是这样,知道为什么要返回负数以及我能做些什么来解决它吗?如果没有,请提供有关正确方法的任何建议。
【问题讨论】:
-
谁对这个问题投了反对票,请就我如何改进这个问题提出建设性的批评。
-
这个任务不需要任何包。简单地说:
df1$dob[is.na(df1$dob)] <- bd_ref$dob[match(df1$id, bd_ref$id)][is.na(df1$dob)]会做到的。 (我不是反对者) -
@thelatemail 刚刚得到该解决方案来处理我的原始数据集。太棒了,谢谢!
标签: r lookup-tables qdap