首页 > 解决方案 > 从 CSV 读取数据时 type.convert 出错

问题描述

我正在做一个篮球项目。我正在努力打开我在 R 上的数据: https ://www.basketball-reference.com/leagues/NBA_2019_totals.html

我已在 excel 上导入数据,然后将其保存为 CSV(对于 macintosh)。当我在 RI 上导入数据时,会收到一条错误消息:

"Error in type.convert.default(data[[i]], as.is = as.is[i], dec = dec, : invalid multibyte string at '<e7>lex<20>Abrines' "

标签: r

解决方案


以下似乎有效。readHTMLTable由于 column 中存在空字符,该函数确实会发出警告Player

library(XML)

uri <- "https://www.basketball-reference.com/leagues/NBA_2019_totals.html"
data <- readHTMLTable(readLines(uri), which = 1, header = TRUE)

i <- grep("Player", data$Player, ignore.case = TRUE)
data <- data[-i, ]
cols <- c(1, 4, 6:ncol(data))
data[cols] <- lapply(data[cols], function(x) as.numeric(as.character(x)))

检查是否有NA值。这是必需的,因为链接中的表不时重新启动标题,并且字符串与数字条目混合在一起。以上grep旨在检测此类情况,但也许还有其他情况。

sapply(data, function(x) sum(is.na(x)))

不,一切都很好。所以将数据集写成 CSV 文件。

write.csv(data, "nba.csv")

推荐阅读