如何使用字符向量长度大于 1 的 grepl?



尝试创建一个条件dummy variable (c),将b >= x转换为c = 1,将b < x转换为c = 0

x = 3时的示例输出:

a b c
1 1 0
2 3 1
3 4 1
4 2 0
df$c<-ifelse(grepl(b[b <= 3], df$b), as.numeric(1), as.numeric(0))

我尝试使用上述ifelse()函数,但grepl只允许长度为 1 的字符:

In grepl(b[b <= 3],df$b( : (参数"模式"的长度> 1,并且仅使用第一个元素(

我认为您对grepl以及如何(以及何时(使用正则表达式有点困惑。正则表达式用于查找字符串中的模式(例如计算变量b的一部分"b","d"或"g",可以使用grepl("[bdg]", b, ignore.case = TRUE)(。如果b是数字,则使用条件语句(就像您一样(。

基本上你可以使用

df$c <- with(df, ifelse(b <= 3, 1, 0)) 

df$c <- ifelse(df$b <= 3, 1, 0)

或类似地使用转换

df <- transform(df, c = ifelse(b<=3, 1, 0))

混淆可能是您试图找出 ifelse 语句which是 1 还是 0。为此,您可以使用which

df$c <- 0
df$c[which(b <= 3)] <- 1

相关内容

  • 没有找到相关文章

最新更新