我是文本新手。
我有一个短信数据集,我想知道是否有垃圾邮件。我使用quanteda将我的文本内容转换为单词矩阵。我还删除了停用词,将单词转换为词干,并用
训练了一个模型 rpart.cv.1 <- train(Label ~ ., data = train_tokens_df, method = "rpart", trControl = cv_cntrl, tuneLength = 5)
。
现在我想预测testdata的标签。我完成了对列车数据所做的所有预处理步骤。问题是,我的列车数据中有测试数据未涵盖的字样。
我的猜测是,下一步应该是添加测试数据中缺少的训练数据的所有列。但是如何以简单有效的方式做到这一点?在我的案例中,训练和测试都是数据框架。
答案 0 :(得分:0)
data.table
可能有一些技巧,但是如果你有两个data.frame
并且只想将第二个“子集”到第一个的列名,填写缺少的列,那么你可以做到以下几点:
orig = data.frame(a = 1:3, b = 2:4) # example data
new = data.frame(a = 7:9, c = 11:13) # missing the 'b' column
# first insert new columns that are still missing in 'new':
new[setdiff(colnames(orig), colnames(new))] = 0 # NA, or whatever
# now subset the new dataset to the columns of the old one
new = new[colnames(orig)]
这会给你
> new
a b
1 7 0
2 8 0
3 9 0
请注意,这仅适用于data.frame
,而不适用于matrix
,因此如果您有矩阵,则需要执行此操作
new = as.data.frame(new)
第一