gpt4 book ai didi

read_excel 'expecting numeric' ..... 值是数字

转载 作者:行者123 更新时间:2023-12-04 18:02:09 27 4
gpt4 key购买 nike

我没有找到这个问题的答案,所以希望这是在这方面获得帮助的地方。

我正在阅读包含在 .zip 文件中的许多 Excel 文件。我拥有的每个 .zip 文件都有大约 40 个我想阅读的 excel 文件。我正在尝试创建数据框列表,但在根据文件内容读取某些文件时遇到错误。

这是读取语句,在 for 循环中:

    library(readxl)
df[[i]] <- read_excel(xls_lst[i],
skip = 4,
col_names = FALSE,
na = "n/a",
col_types = data_types)

data_types 有这些值: > 数据类型
[1] “文本” “数字” “数字” “数字” “数字” “数字” “数字”

对于这个文件是正确的。

read_excel 语句在某些文件上运行良好,但在其他文件上返回警告消息:

In read_xlsx_(path, sheet, col_names = col_names, col_types = col_types,... :
[54, 7]: expecting numeric: got '9999.990000'

好吧,值“9999.99000”对我来说看起来像一个数字。当我打开创建此警告的 Excel 文件时,该文件确实显示了这些值,并且还显示该列在 Excel 中被格式化为文本。当我将列格式更改为数字时,重新保存 Excel 工作表,然后数据被正确读入。

但是,我有数百个这样的文件要读取... read_excel 怎么能忽略 Excel 指示的列格式,而是使用我定义的 col_type在调用语句中提供 ?

谢谢,

最佳答案

我尝试构建一个玩具示例。

我的 xlsx 文件包含:

3   1
3 3
4 4
5 5
7 '999
6 3

按照您的方式阅读:

data_types<-c("numeric","numeric")
a<-read_excel("aa.xlsx",
col_names = FALSE,
na = "n/a",
col_types = data_types
)
Warning message:
In read_xlsx_(path, sheet, col_names = col_names, col_types = col_types, :
[5, 2]: expecting numeric: got '999'

文本的形式读取所有内容

data_types<-c("text","text")
dat<-read_excel("aa.xlsx",
col_names = FALSE,
na = "n/a",
col_types = data_types
)

并使用type.convert:

dat[]<-lapply(dat, type.convert)

至少对这个简单的例子有效。

*编辑:

代码中有错误。

*编辑回应评论:

另一个玩具示例演示了如何将 type.convert 应用于您的数据:

#list of data frames
l<-list()
l[[1]]<-data.frame(matrix(rep(as.character(1:5),2), ncol = 2), stringsAsFactors = FALSE)
l<-rep(l,3)

#looping over your list to encode columns correctly:
for (i in 1: length(l)){
l[[i]][]<-lapply(l[[i]], type.convert)
}

可能有更好的解决方案。但我认为这应该有效。

关于read_excel 'expecting numeric' ..... 值是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com