我有一个像这样的数据框:
id words
1: 1 capuccin,mok
2: 2 bimboll,ext,sajonjoli
3: 3 burrit,sincr
4: 4 div,tir,mini,doradit
5: 5 pan,multigran,linaz
6: 6 tost,integral
7: 7 pan,blanc
8: 8 sup,pan,bco,ajonjoli
9: 9 wond
10: 10 wond
我正在使用以下代码:
bag_of_words <- CountVectorizer$new()
result_df <- cbind(df$id, bag_of_words$fit_transform(df$words))
我想得到类似的东西:
tab_1$id capuccin mok bimboll ext sajonjoli...
1 1 1 1 0 0 0...
2 2 0 0 1 1 1...
3 3 0 0 0 0 0...
4 ... ... ... ... ... ...
但是,相反,它返回一个矩阵,其中包含每个单词的出现次数,而只是返回单词 wond :
df$id wond
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 1
10 10 1
我的代码怎么了?
答案 0 :(得分:0)
我使用的是silimar方法,而不是tmfmnk在评论中的建议。
tab_1 <- tab_1 %>%
unnest(words) %>%
mutate(words = strsplit(words, ','), occ = 1) %>%
dcast(id ~ unlist(words), fill = 0)
现在它可以正常工作了。
id ajonjoli bco bimboll ...
1 0 0 0 ...
2 0 0 1 ...
3 0 0 0 ...
... ... ... ...