尝试创建一个条件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