我需要一种快速而简洁的方法将数据框中的字符串文字拆分为一组列。假设我有这个数据框
data <- data.frame(id=c(1,2,3), tok1=c("a, b, c", "a, a, d", "b, d, e"), tok2=c("alpha|bravo", "alpha|charlie", "tango|tango|delta") )
(请注意列之间不同的分隔符)
字符串列的数量通常是事先未知的(尽管如果我没有其他选择,我可以尝试发现整组情况)
我需要两个这样的数据框:
tok1.occurrences:
+----+---+---+---+---+---+
| id | a | b | c | d | e |
+----+---+---+---+---+---+
| 1 | 1 | 1 | 1 | 0 | 0 |
| 2 | 2 | 0 | 0 | 1 | 0 |
| 3 | 0 | 1 | 0 | 1 | 1 |
+----+---+---+---+---+---+
tok2.occurrences:
+----+-------+-------+---------+-------+-------+
| id | alpha | bravo | charlie | delta | tango |
+----+-------+-------+---------+-------+-------+
| 1 | 1 | 1 | 0 | 0 | 0 |
| 2 | 1 | 0 | 1 | 0 | 0 |
| 3 | 0 | 0 | 0 | 1 | 2 |
+----+-------+-------+---------+-------+-------+
我尝试使用这个语法:
tok1.f = factor(data$tok1)
dummies <- model.matrix(~tok1.f)
这最终导致了一个不完整的解决方案。它正确地创建了我的虚拟变量,但(显然)没有根据分隔符进行分割。
我知道我可以使用“tm”包来查找文档术语矩阵,但对于这种简单的标记化来说似乎太多了。有更直接的方法吗?