qdf <- 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")