楼主:
andrew43 (讨厌有好心推文后删文者)
2015-07-24 00:02:05qdf <- data.frame(
que = c("卖多少","有现货吗","多少钱","有货吗","有故障吗",
"有现货吗","多少钱","有故障吗"),
id = 1:8,
group = NA
)
glist <- list()
glist$询价 <- grep("(多少)|钱", qdf$que)
glist$供货 <- grep("(现货)|货", qdf$que)
glist$故障 <- grep("(故障)|(坏掉)", qdf$que)
print(glist)
qdf$group[glist$询价] <- "询价"
qdf$group[glist$供货] <- "供货"
qdf$group[glist$故障] <- "故障"
print(qdf)
我不是这方面的专家,只是试着找一个解法给你。
但请你注意一下,如果 glist 的结果会有重复的列号,
也就是一个 case 可归于超过一类,
那最后 qdf$group 的处理就不洽当了。
另外,string searching 我是靠 grep(),
但可能有更适合的办法。
※ 引述《ardodo (米虫)》之铭言:
: 谢谢a版主提供的解法,不过我想尝试的是文字探勘的方式,我可能表达的不够清楚Orz
: 我想要的判断方式如下:
: 1. 看到"多少" 或 "钱"就判断为"询价"
: 2. 看到"现货" 或 "货"就判断为"供货"
: 3. 看到"故障"就判断为"状况"
: 恳请回答,感谢
: ※ 引述《andrew43 (讨厌有好心推文后删文者)》之铭言:
: : # 你需要的应该就是 merge()
: : qdf <- data.frame(
: : que = c("卖多少","有现货吗","多少钱","有货吗","有故障吗",
: : "有现货吗","多少钱","有故障吗"),
: : id = 1:8
: : )
: : # 建立对照表
: : ref <- data.frame(
: : que = c("卖多少","有现货吗","多少钱","有货吗","有故障吗"),
: : ans = c("询价", "供货", "询价", "供货", "状况")
: : )
: : # 合并
: : merge(qdf, ref, by.x = "que", by.y = "que")
: : # 因为合并的对应字段在 ref 和 qdf 都叫 "que"
: : # 所以可以简化成
: : merge(qdf, ref, by = "que")