Я новичок в Р.
У меня есть таблица с некоторыми отсутствующими данными, которые я хотел бы обновить из справочной таблицы.
Пример таблицы данных:
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
Сначала я определил недостающие данные, а затем попытался использовать функцию lookup
из пакета qdapTools на основе этого ответа Простой поиск для вставки значений во фрейм данных R следующим образом:
df1[is.na(df1$доб),"доб"]‹-df1[is.na(df1$доб),"id"] %l% d_ref[,c("id","доб")]
но получил ошибку:
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)]
сделает это. (я не минусующий) - person thelatemail   schedule 26.02.2016