小编use*_*318的帖子

将字符串列拆分为多个虚拟变量

作为R中data.table包的相对缺乏经验的用户,我一直在尝试将一个文本列处理成大量的指示符列(虚拟变量),每列中有一个1表示特定的子字符串是在字符串列中找到.例如,我想处理这个:

ID     String  
1       a$b  
2       b$c  
3       c  
Run Code Online (Sandbox Code Playgroud)

进入这个:

ID     String     a     b     c  
1       a$b       1     1     0  
2       b$c       0     1     1  
3        c        0     0     1  
Run Code Online (Sandbox Code Playgroud)

我已经弄清楚如何进行处理,但运行时间比我想要的要长,我怀疑我的代码效率低下.我的代码的可重现版本与虚拟数据如下.请注意,在实际数据中,要搜索的子字符串超过2000个,每个子字符串的长度大约为30个字符,最多可能有几百万行.如果需要,我可以并行化并为问题投入大量资源,但我希望尽可能优化代码.我试过运行Rprof,这表明没有明显(对我而言)改进.

set.seed(10)  
elements_list <- c(outer(letters, letters, FUN = paste, sep = ""))  
random_string <- function(min_length, max_length, separator) {  
    selection <- paste(sample(elements_list, ceiling(runif(1, min_length, max_length))), collapse = separator)  
    return(selection)  
}  
dt <- data.table(id = c(1:1000), messy_string = "")  
dt[ , messy_string := random_string(2, 5, "$"), by = id]  
create_indicators <- function(search_list, …
Run Code Online (Sandbox Code Playgroud)

string split r data.table dummy-variable

8
推荐指数
1
解决办法
1105
查看次数

标签 统计

data.table ×1

dummy-variable ×1

r ×1

split ×1

string ×1