当字符在字符串中出现多次时标记
Flag when character appears more than once in a string
我看到 Python 的类似回答,但 R 没有。假设我有下面的示例数据,我想创建“想要”列,当字符“|”时标记在“var1”列的字符串中出现不止一次。我将如何在 R 中执行此操作?我知道我可以使用 grepl
标记任何时候“|”出现了,但是这也会在它只出现一次时捕获。
示例数据:
var1<-c("BLUE|RED","RED|BLUE","WHITE|BLACK|ORANGE","BLACK|WHITE|ORANGE")
want<-c(0,0,1,1)
have<-as.data.frame(cbind(var1,want))
var1 want
BLUE|RED 0
RED|BLUE 0
WHITE|BLACK|ORANGE 1
BLACK|WHITE|ORANGE 1
可以使用str_count
——统计|
的个数(元字符——所以转义(\
)或者指定为fixed
,然后创建一个逻辑向量(> 1
), 逻辑转二进制(as.integer
or +
)
library(stringr)
have$want <- +(str_count(have$var1, fixed("|") ) > 1)
我看到 Python 的类似回答,但 R 没有。假设我有下面的示例数据,我想创建“想要”列,当字符“|”时标记在“var1”列的字符串中出现不止一次。我将如何在 R 中执行此操作?我知道我可以使用 grepl
标记任何时候“|”出现了,但是这也会在它只出现一次时捕获。
示例数据:
var1<-c("BLUE|RED","RED|BLUE","WHITE|BLACK|ORANGE","BLACK|WHITE|ORANGE")
want<-c(0,0,1,1)
have<-as.data.frame(cbind(var1,want))
var1 want
BLUE|RED 0
RED|BLUE 0
WHITE|BLACK|ORANGE 1
BLACK|WHITE|ORANGE 1
str_count
——统计|
的个数(元字符——所以转义(\
)或者指定为fixed
,然后创建一个逻辑向量(> 1
), 逻辑转二进制(as.integer
or +
)
library(stringr)
have$want <- +(str_count(have$var1, fixed("|") ) > 1)