1. ホーム
  2. r

Rで複数のスペースをデリミターとするテキストファイルの読み込み

2023-10-27 18:56:52

質問

私は約94列、300万行からなる大きなデータセットを持っています。このファイルには、列間の区切り文字として、単一および複数のスペースがあります。私はRでこのファイルからいくつかの列を読み取る必要があります。このために私は以下のコードで見ることができるオプションでread.table()を使用しようとしました、コードは以下に貼り付けられています。

### Defining the columns to be read from the file, the first 5 column, then we do not read next 24, after this we read next 5 columns. Last 60 columns are not read in-

    col_classes = c(rep("character",2), rep("numeric", 3), rep("NULL",24), rep("numeric", 5), rep("NULL", 60))   

### Reading first 100 rows of the data

    data <- read.table(file, sep = " ",header = F, nrows = 100, na.strings ="", stringsAsFactors= F)

読み込むファイルには、列の区切りとして複数のスペースがあるため、上記の方法はうまくいきません。このファイルを効率的に読み込むことができる方法はないでしょうか。

どのように解決するのですか?

デリミターを変更する必要があります。 " " は1つの空白文字を指します。 "" は任意の長さの空白を区切り文字として参照します。

 data <- read.table(file, sep = "" , header = F , nrows = 100,
                     na.strings ="", stringsAsFactors= F)

マニュアルから

sep = ""(read.tableのデフォルト)の場合、セパレータは「ホワイトスペース」、つまり1つ以上のスペース、タブ、ニューライン、キャリッジリターンのいずれかになります。

また、大きなデータファイルの場合、次のように考えることもできます。 data.table:::fread を使用して、データを直接 data.table に素早く読み込むこともできます。私自身、今朝この関数を使っていました。まだ実験的なものですが、実にうまく機能していることがわかります。