3

値を集計するために使用したい列 (最小値と最大値など) を含む、より大きなデータセット (約 9m 行の data.table) があります。列は他のさまざまな列の組み合わせであり、以下のような文字列ベースの形式になっています。

string <- "318XXXX | VNSGN | BIER"

タスクの実行速度を上げるために、これを一意の整数に再コーディングしたいと思います。私がデータを扱うために定期的に使用している別のアプリケーションには、上記の文字列を整数に変換する組み込み関数があります (例: 73823)。Rに同様の機能があるかどうか疑問に思っていましたか?特定の文字列は常に同じ整数になるという考え方です。これにより、data.tables などのマージに使用できるようになります。

単純な整数値でエンコードしたい data.table 列の小さな例を次に示します。

sample <- c("318XXXX | VNSGN | BIER", "462XXXX | TZZZH | 9905", "462XXXX | TZZZH | 9905", 
"462XXXX | TZZZH | 9905", "511XXXX | FAWOR | 336H", "511XXXX | FAWOR | 336H", 
"652XXXX | XXXXR | T136", "652XXXX | XXXXR | T136", "672XXXX | BQQSZ | 7777", 
"672XXXX | BQQSZ | 7777")

以下のような表の追加の列に文字列をエンコードしたいと考えています。同じ文字列は同じ数値になることに注意してください。

String                      Number
318XXXX | VNSGN | BIER      19872
462XXXX | TZZZH | 9905      78392
462XXXX | TZZZH | 9905      78392
462XXXX | TZZZH | 9905      78392
511XXXX | FAWOR | 336H      23053
511XXXX | FAWOR | 336H      23053
652XXXX | XXXXR | T136      95832
652XXXX | XXXXR | T136      95832
672XXXX | BQQSZ | 7777      71829   
672XXXX | BQQSZ | 7777      71829
4

1 に答える 1

6

data.tableパッケージは、明示的に処理することなくインデックスを作成するため、質問のアプローチよりも作業が少なくなります。setkeydata.table の関数を参照してください。

また、sqldfパッケージは、ほぼすべてのデータベースパッケージと同様に、 sqldfホームページcreate indexの例4hおよび4iのようにSQLステートメントを使用できます。

于 2013-01-14T21:12:34.900 に答える