合并具有不同属性的数据集

Merging Datasets with Different Attributes

我有一组 .xls 文件,其中包含一年中不同时期的数据。我想合并它们,以便将所有数据放在一个文件中。我尝试了以下代码:

#create files list
setwd("~/2010")
file.list <- list.files( pattern = ".*\.xls$", full.names = TRUE )

当我继续时,我收到了一些警告,但我认为它们不相关。见下文:

#read files
> l <- lapply( file.list, readxl::read_excel )
There were 50 or more warnings (use warnings() to see the first 50)
> warnings()
Warning messages:
1: In read_fun(path = enc2native(normalizePath(path)), sheet_i = sheet,  ... :
  Expecting numeric in F1944 / R1944C6: got '-'
2: In read_fun(path = enc2native(normalizePath(path)), sheet_i = sheet,  ... :
  Expecting numeric in H1944 / R1944C8: got '-'

然后,我 运行 下面一行,弹出属性问题:

> dt <- data.table::rbindlist( l, use.names = TRUE, fill = TRUE )
Error in data.table::rbindlist(l, use.names = TRUE, fill = TRUE) : 
  Class attribute on column 15 of item 4 does not match with column 15 of item 1.

有人可以帮我解决这个问题吗?非常感谢

如果您要将两个数据集绑定在一起,则列的 classes 必须匹配。你的显然没有。因此,您需要以某种方式解决这些不匹配问题。

因为您没有为 read_xl::read_excel 提供 col_types 参数,它正在猜测列类型。我假设您希望所有数据框中的列都相同 class(否则,为什么要绑定它们?)在这种情况下,您可以传递一个 col_types 参数,这样 read_xl::read_excel 就不会不用猜了。

此处的错误消息很有用:我认为他们是在说某个列被猜测为数字,但随后解析器遇到了“-”。也许这导致列被分配 class "character"。可能原始数据中出现“-”表示缺失值。然后将 na = c("", "-") 传递给 read_xl::read_excel 可以解决问题。