【发布时间】:2014-11-18 16:01:10
【问题描述】:
我需要一种快速简洁的方法将数据帧中的字符串文字拆分为一组列。假设我有这个数据框
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”包来查找文档术语矩阵,但对于这种简单的标记化来说似乎太多了。有没有更直接的方法?
【问题讨论】:
-
还有here(我认为这是一个恰当的问题)。
-
其实我已经投票重新提出这个问题。尽管它们非常相似,但它们不是精确重复的。但是,我建议您用您尝试过的方法来说明您的问题 - 如果不出意外,它将获得善意。目前,您没有编码错误/问题,您有一项任务希望其他人为您解决。
-
我没有编码错误,因为我不知道为该任务编写哪个代码。但是,我实际上使用 tm 包做了一些测试。基本上,我使用该包针对来自各种 alpha、bravo、charlie、a、b...的术语词典构建了一个文档术语矩阵。
-
添加了第一次(不成功)尝试