2017-02-12 11 views
0

http://www.ercot.com/gridinfo/load/load_histから複数のファイルを読み込もうとしていますが、最後のファイルを除いてread.csvですべてのファイルが正しく読み取られます(2017年のファイル)。ファイルを読み取ろうとするとスキャン(ファイル=ファイル内RでCSVファイルを読み取る際にエラーが発生しました

エラー、9月= 9月、引用=引用符、12月= 12月、何=何:read.csvで、私は次のエラーを取得 スキャン()は予想を「実際の」、です'' 8 '

ただし、Excelで確認したところ、"8または8の値がファイル。エラーメッセージは明らかですが、"8または8が見つかりません。read.csvファンクションのnrows引数を使用して0行を読み込んでも同じ問題が発生します。

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) 

また、ファイルの最後の行には、残りのファイルの形式を尊重しない値があります。私は最後の行をスキップしたいと思いますが、これを行うにはread.csv関数に引数がありません。何か回避策はありますか?私は考えているかのようなものを使用しています:

hold2 <- read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""), header=TRUE, sep=",", dec = ".", colClasses=c("character",rep("double",9)), nrows=nrow(read.csv(paste(PATH, "\\CSV\\", "native_load_2017.csv", sep=""))-1)) 

どのようにこれに最善を尽くす考えですか?香りの列を見ることができます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() 
) 
> 

を使用したおかげで

+0

'readr :: read_csv'を使用するとどうなりますか? CSVファイルはどこから入手していますか?そのサイトにはXLSファイルがあります。 – hrbrmstr

+1

'df < - readxl :: read_excel("〜/ Desktop/native_load_2017.xls "); df < - dplyr :: filter(df、!is.na(COAST)) 'はExcelから手動でCSVを保存する方が良いでしょう。 – hrbrmstr

+0

私は手動でXLSからCSVを作成しましたが、私はそれを言及することを完全に忘れました。ファイルはCSV形式で保存する必要があります.XLS形式は使用できません。 – Xavier

答えて

0

(原因あなたが指摘し、最後の行の値のフォーマットの違いに)文字として解析されています。以下では、最初の列を文字として、デフォルトをcol_number()として指定すると、ファイルが読み込まれます(col_number()は、2つの列にあるコンマと小数点を処理します)。

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 
+0

ファイルのコンマで頭をアップしてくれてありがとう、私は完全にそれを逃してしまった! – Xavier

+0

@XavierGuérette問題なく、うまくいきました! –

関連する問題