合并具有不同属性的数据集
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
可以解决问题。
我有一组 .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
可以解决问题。