我有一个包含混合字符串的列,我创建了列来表示字符串中的每个唯一字符。我需要用 [1,0]
对列进行编码如果字符串中的任何字符与这些列之一匹配。
library(data.table)
d = data.table(string = c("P_P_F_", "U_F_/", "-_P_B"),
P = c(1, 0, 1),
F = c(1, 1, 0),
U = c(0, 1, 0),
B = c(0, 0, 1))
在上面的例子中 string
有我需要与相应列匹配的字符。第一个字符串有 P
和 F
所以我有一个 1
在那些列和 0
在其余的。字符串中的字符始终由下划线分隔,最大长度为 7。
数据集非常大,所以我更喜欢 data.table 解决方案是可能的。
最佳答案
我们可以使用 mtabulate
分割字符串后
library(qdapTools)
cbind(d, mtabulate(strsplit(d$string, "[_/-]")))
数据d <- data.table(string = c("P_P_F_", "U_F_/", "-_P_B"))
关于r - One-hot 编码文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66745667/