[英]Regex in if else statement in R
我有一個相當簡單的問題。 我試圖使下面的if else語句起作用。
如果滿足if語句,則應分配為“ 1”,否則為0。 我的問題是我無法在if語句中使用正則表達式來工作('\\ w * | \\ W *)。 應該指定條件,該字符串是“需要注冊”或“必須注冊”后跟任何字符。 我無法指定確切的案例,因為在“需要注冊”之后(在某些情況下),它通常是一個日期(每次觀察都不同)和幾個單詞。
Registration_cleaned <- c()
for (i in 1:length(Registration)) {
if (Registration[i] == ' Registration Required\\w*|\\W*') {
Meta_Registration_cleaned <- 1
} else {
Meta_Registration_cleaned <- 0
}
Registration_cleaned <- c(Registration_cleaned, Meta_Registration_cleaned)
}
您可以將transform和ifelse函數一起使用來設置Meta_Registration_cleaned。 為了匹配正則表達式,grep函數可以與模式“ Registration Required \\ w *”一起使用。
Registration <- data.frame(reg = c("Registration Required", "Registration Required ddfdqf","some str", "Regixxstration Required ddfdqf"),stringsAsFactors = F)
transform(Registration,Meta_Registration_cleaned = ifelse(grepl("Registration Required\\w*",Registration[,"reg"]), 1, 0))
給出結果:
reg Meta_Registration_cleaned
1 Registration Required 1
2 Registration Required ddfdqf 1
3 some str 0
4 Regixxstration Required ddfdqf 0
我可能完全誤解了OP,因為我對這個問題的理解與這里的其他人完全不同。
我之前的評論建議在字符串末尾查找正則表達式。
Registration <- data.frame(reg = c("Registration Required", "Registration Required ddfdqf","Registration Required 10/12/2000"),stringsAsFactors = F)
#thanks @user1653941 for drafting the sample vector
Registration$Meta_Registration_cleaned <- grepl('Registration required$', Registration$reg, ignore.case = TRUE)
Registration
1 Registration Required TRUE
2 Registration Required ddfdqf FALSE
3 Registration Required 10/12/2000 FALSE
我對OP的理解是這樣的,條件是:要么是字符串“需要注冊”,而后沒有字符,要么是……。 期待OP的評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.