Rdata.tableのフレッドの5つの便利なオプション

data.table Rパッケージのすべての関数と同様に、freadは高速です。とても早い。しかし、スピードよりも恐れることがあります。Rに外部データをインポートするときに役立つ機能とオプションがいくつかあります。最も便利な5つを次に示します。

注:フォローしたい場合は、米国郡による毎日のCovid-19ケースのニューヨークタイムズCSVファイルを//github.com/nytimes/covid-19-data/raw/master/us-countiesからダウンロードしてください。 csv。

freadのnrowsオプションを使用する

ファイルは大きいですか?テキストエディタやExcelで開かなくても、すべてをインポートする前にその構造を調べたいですか?探索のためにファイルの一部のみnrowsインポートするには、freadのオプションを使用します

以下のコードは、CSVの最初の10行のみをインポートします。

mydt10 <-fread( "us-counties.csv"、nrows = 10)

データなしで列名を表示したいだけの場合は、を使用できますnrows = 0。 

フレッドの選択オプションを使用する

ファイル構造がわかれば、インポートする列を選択できます。freadのselectオプションを使用すると、保持する列を選択できます。selectまたは列位置番号のいずれかのベクトルを取ります。名前の場合、文字列のほとんどのベクトルのように、引用符で囲む必要があります。

mydt <-fread( "us-counties.csv"、

select = c( "date"、 "county"、 "state"、 "cases"))

いつものように、数字には引用符は必要ありません。

mydt <-fread( "us-counties.csv"、select = c(1,2,3,5))

この次のコードグループでわかるように、fread内に列名のベクトルを持つRオブジェクトを使用できます。日付、郡、州、ケースを含むベクターmy_colsを作成します。次に、そのベクトルをフレッド内で使用します。

my_cols <-c( "date"、 "county"、 "state"、 "cases")

mydt <-fread( "us-counties.csv"、select = my_cols)

の反対はselectですdrop。次のように、で指定した列を除くすべての列インポートすることを選択できますdrop

mydt <-fread( "us-counties.csv"、drop = c( "fips"、 "deaths"))

と同様にselectdrop列名または数値位置のベクトルを取ります。 

grepでfreadを使用する

Unixに精通している場合は、 fread内からコマンドラインツールを直接実行できます。たとえば、カリフォルニアのデータが必要な場合は、grepを使用して、「California」というテキストを含む行のみをインポートできます。これは、各行全体を特定の列ではなくテキスト文字として検索するため、データはそれが意味のある形式である必要があることに注意してください。

ca <-fread( "grep California us-counties.csv")

残念ながら、grepは元のファイルの列名を理解しないため、デフォルトの名前になってしまいます。

head(ca)V1 V2 V3 V4 V5 V6 1:2020-01-25 Orange California 6059 1 0 2:2020-01-26 Los Angeles California 6037 1 0 3:2020-01-26 Orange California 6059 1 0 4:2020 -01-27カリフォルニア州ロサンゼルス60371 0 5:2020-01-27カリフォルニア州オレンジ6059 1 0 6:2020-01-28カリフォルニア州ロサンゼルス6037 1 0

ただし、freadでは、col.namesオプションを使用して列名を指定できます。上で作成したmydt10の名前に基づいて名前を設定できます。

ca head(ca)日付郡州fipsケース死亡1:2020-01-25オレンジカリフォルニア6059 1 0 2:2020-01-26ロサンゼルスカリフォルニア6037 1 0 3:2020-01-26オレンジカリフォルニア6059 1 0 4: 2020-01-27カリフォルニア州ロサンゼルス60371 0 5:2020-01-27カリフォルニア州オレンジ6059 1 0 6:2020-01-28カリフォルニア州ロサンゼルス6037 1 0

grepの-Eオプションを使用して正規表現を使用することもでき、4つの状態を一度に検索するなど、より複雑な検索を実行できます。 

States4 <-fread(cmd = "grep -E 'テキサス|アリゾナ|フロリダ|サウスカロライナ' us-counties.csv"、

col.names = names(mydt10))

繰り返しになりますが、リマインダー:これは、状態列だけでなく、行の任意の場所でこれらの状態名のそれぞれを検索します。上記のコードを実行し、で結果に含まれる州を確認するとunique(states4$state)、テキサス、アリゾナ、フロリダ、サウスカロライナとともに、州の列にオクラホマとミズーリが表示されます。これは、オクラホマとミズーリの両方にテキサスという名前のがあるためです。

したがって、ファイルのインポート中のgrepは、非常に大きなデータセットから不要な多くのデータを除外する方法です。しかし、それはあなたが望むものだけを手に入れることを保証するものではありません。この種のインポート後も、予期しないものが発生しないように、列データを特にフィルタリングする必要があります。

freadのcolClassesオプションを使用する

インポート中に列クラス設定できます–すべてではなく、ほんの数列に設定できます。たとえば、このデータの日付列は、年-月-日形式ですが、文字列として入力されます。オプション を使用して、dateという名前の列をインポート中にデータ型Dateに設定できcolClassesます。 

mydt <-fread( "us-counties.csv"、colClasses = c( "date" = "Date"))

現在、日付は日付です。

> str(mydt)クラス 'data.table'および 'data.frame':322651obs。6つの変数の:$日付:日付、形式: "2020-01-21" "2020-01-22" "2020-01-23" ... $郡:chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $状態:chr"ワシントン ""ワシントン ""ワシントン ""イリノイ "... $ fips:int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ケース:int 1 1 1 1 1 1 1 1 1 1 ... $死亡:int 0 0 0 0 0 0 0 0 0 0 .. ..

zipファイルにfreadを使用する

最初に解凍せずにzipファイルをインポートできます。freadは、mydt <- fread("myfile.gz")。などのgzファイルとbz2ファイルを直接インポートできます 。zipファイルをインポートする必要がある場合はunzip、構文を使用して、fread内のsystemコマンドで解凍できます mydt <- fread(cmd = 'unzip -cq myfile.zip')

その他のRのヒントについては、「Rでさらに多くのことを行う」ページに進んでください。