r - One-hot 编码文本字符串

标签 r data.table

我有一个包含混合字符串的列,我创建了列来表示字符串中的每个唯一字符。我需要用 [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有我需要与相应列匹配的字符。第一个字符串有 PF所以我有一个 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/

相关文章:

json - R:将 JSON 通用扁平化为 data.frame

r - 加载data.table对象后直接用get(data.table)生成一个新变量

r - 使用数据框更新表

r - 从整数到位再返回

r - R-参数方法中的预测生存曲线

r - 将 R 与现有 C# 网站集成

R 计算数据帧或数组中相邻相同值的数量

r - 如何在函数和循环中使用 data.table?

mysql - RODBC sqlSave 的问题

r - 具有部分字符串匹配 R 的列的总和