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 に素早く読み込むこともできます。私自身、今朝この関数を使っていました。まだ実験的なものですが、実にうまく機能していることがわかります。
関連
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] 重複した行を削除する
-
[解決済み] なぜテキストファイルは改行で終わらなければならないのですか?
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] 先頭と末尾の空白を削除するにはどうしたらよいですか?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】data.frameのカラムを因子から文字に変換する
-
[解決済み] 巨大な .csv ファイルを読み込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン