4

私は、1950 年以降、毎年 1 つの大きな CSV データ ファイルを含む米国気象サービスの Storm Data を処理しています。1999 年のファイルには、NUL 文字が埋め込まれた非常に大きな自由形式のテキスト フィールドを持つ複数の行が含まれています。(問題のあるファイルはftp://ftp.ncdc.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d1999_c20140915.csv.gzにあります)。

R は破損した文字列データをエラーなしで処理できません。これには、R の data.frame、data.table、stringr、および stringi パッケージ関数が含まれます (試行済み)。

sed を使用して NUL のファイルをクリーンアップできますが、コードが埋め込まれた R マークダウン タイプのレポート用であるため、外部プログラムは使用しない方がよいでしょう。

提案?

4

3 に答える 3

3

たぶんこれが役立つかもしれません:

in.file <- file(description = "StormEvents_details-ftp_v1.0_d1999_c20140915.csv", 
                open = "r")
writeLines(iconv(readLines(in.file), to = "ASCII"), 
           con = "StormEvents_ascii.csv")

この呼び出し do read.table で、csv ファイルをエラーなしで読み取ることができました。

options(stringAsFactors = FALSE)
StormEvents <- read.table("StormEvents_ascii.csv", header = TRUE, 
                           sep = ",", fill = TRUE, quote = '"')

すべてがそのまま文字と見なされるため、明らかに、いくつかの列のクラスを変更する必要があります。

于 2015-03-11T08:27:49.163 に答える
1

後世のために-バイナリ読み取り()を使用して、 sを他のものに readBin()置き換えることができます- 「NUL」文字の削除(R内)を参照してくださいNUL

于 2015-12-11T02:42:57.297 に答える