我正在尝试从http://www.ercot.com/gridinfo/load/load_hist读取一堆文件,所有文件都使用read.csv正确读取,除了最后一个文件,2017年的文件。当我尝试用{{读取文件时1}}我收到以下错误:
扫描错误(file = file,what = what,sep = sep,quote = quote,dec = dec,: scan()期待'真实',得''8'
但是,我已使用Excel进行检查,文件中没有read.csv
或"8
值。错误消息似乎很清楚,但我找不到8
或"8
,即使我读了0行(8
的{{1}}参数,我也有同样的问题{1}}功能)。
nrows
此外,在文件的最后一行中,有些值不符合文件其余部分的格式。我想跳过最后一行,但read.csv
函数中没有参数可以做到这一点。有什么工作吗?我正在考虑或使用类似的东西:
hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)))
hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)), nrows=0)
有关如何做到这一点的任何想法?感谢
答案 0 :(得分:0)
使用readr包
> df <- readr::read_csv("~/Desktop/native_load_2017.csv")
Parsed with column specification:
cols(
`Hour Ending` = col_character(),
COAST = col_number(),
EAST = col_number(),
FWEST = col_number(),
NORTH = col_number(),
NCENT = col_number(),
SOUTH = col_number(),
SCENT = col_character(),
WEST = col_number(),
ERCOT = col_number()
)
>
可以看到SCENT列被解析为字符(由于您记下的最后一行中值的格式不同)。下面,将第一列指定为字符,将默认值指定为col_number()读取文件(注意:col_number()处理您所拥有的列中的逗号和小数点)。
options(digits=7)
df <- readr::read_csv("~/Desktop/native_load_2017.csv", col_types = cols(
`Hour Ending` = col_character(),
.default = col_number())
)
sapply(df, class)
#df[complete.cases(df),] # to remove the last row if needed