数据对接问题解决

在不等长数据对接中,如果直接使用rbind函数会出现错误,这里简单记录以下不等长数据对接的简单处理方法。

问题

在对接数据的时候出现以下提示。

1
2
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match

一开始以为是读取文件出现问题,换成data.table()读取之后,依然出现问题。

1
2
Error in rbindlist(l, use.names, fill, idcol) :
Item 2 has 15 columns, inconsistent with item 1 which has 18 columns. If instead you need to fill missing columns, use set argument 'fill' to TRUE.

一开始没有想到是原数据出现问题,因为这些数据都抓自国家数据库,感觉应该数据指标都一致,结果折腾好长时间,回到原数据一看,真的是原数据的锅。

解决方法

rbind.fill函数替换掉rbind函数。两者的区别在于,rbind.fill函数会用NA填充缺失值。

rbind.fill来自于plyr包,同时使用plyr包和dplyr包时,最好先载入plyr包然后再载入dplyr`包, 不然可能会有如下错误提示,然而好像也并不影响 操作。

1
2
3
4
5
6
7
8
9
10
11
----------------------------------------------------------------------------------------------------------------
You have loaded plyr after dplyr - this is likely to cause problems.
If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
library(plyr); library(dplyr)
----------------------------------------------------------------------------------------------------------------
载入程辑包:‘plyr’
The following objects are masked from ‘package:dplyr’:
arrange, count, desc, failwith, id, mutate, rename, summarise, summarize

参考

R语言数据集合并、数据增减、不等长合并