我有一个相当简单的问题。我试图让下面的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)
}
答案 0 :(得分:0)
您可以将变换与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
答案 1 :(得分:0)
我可能完全误解了OP,因为我完全不同于其他任何人理解这个问题。
我之前的评论建议在字符串的 end 处查找正则表达式。
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的评论。