基于字符串创建唯一的整数

Joc*_*hem 3 r data.table

我有一个更大的数据集(data.table,大约9米行),我想用一个列来聚合值(最小值和最大值等).该列是各种其他列的组合,并具有基于字符串的格式,如下所示:

string <- "318XXXX | VNSGN | BIER"
Run Code Online (Sandbox Code Playgroud)

为了在执行任务时获得一些速度,我想将其重新编码为一个唯一的整数.我定期用来处理数据的另一个应用程序有一个内置函数,它将一个字符串转换为整数(例如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")
Run Code Online (Sandbox Code Playgroud)

我希望将字符串编码到表格的附加列中,如下所示; 请注意,相同的字符串会产生相同的数字.

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
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 6

data.table包将为您创建索引,而不会让您明确地处理它们,因此它将比问题中的方法更少工作.请参阅setkeydata.table中的函数.

sqldf包也可以使用sqldf主页create index上的示例4h和4i 的SQL 语句,就像任何数据库包一样.