[英]extracting a word from a sentence in R
我正在嘗試提取緊跟某些字母的單詞。 例如,在此示例中,我嘗試提取“ AB”后的單詞
x = c("So much fun - AB22148",
"AC33648 does whatever",
"I know -AB11025 Failed",
"Nothing stalled - AB16228",
"Unable to do fdS2083D - Ab26604")
Num = character(0)
for (i in 1:length(x)) {
y = unlist(strsplit(x[i]," "))
Num[i] = grep("AB",y, perl = T, value = T, ignore.case = T)
}
有幾個問題(您可能會說):1.如果不存在“ AB”,則我會報錯,因為Num不能取零長度。 2.如果我克服了這個問題(例如,用AB替換AC),則第5個輸入將使我“無法使用”,而不是“ Ab26604”。
我要尋找的是:1.是否可以不使用循環來完成(也許使用apply函數之一)2.如何處理第3和第5種情況的情況? [我想刪除'-'符號(我可以在下一步中解決這個問題,但想知道是否可以同時完成)]
Num (current output)
[1] "AB22148" " " "-AB11025" "AB16228" "Unable"
Num (required output)
[1] "AB22148" " " "AB11025" "AB16228" "Ab26604"
感謝您的所有幫助。 我真的很感激。 請讓我知道是否需要其他說明
您可以執行以下操作:
require(stringr)
str_extract(x, regex("AB[:alnum:]{5}", ignore_case = TRUE))
這給你:
"AB22148" NA "AB11025" "AB16228" "Ab26604"
如果您想將NA
替換為" "
,則可以執行以下操作:
str_replace_na(tmp, " ") # assuming tmp is the result from above
這給你:
"AB22148" " " "AB11025" "AB16228" "Ab26604"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.