0

试图创建一个dummy variable (c)转换b >= xc = 1b < 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 的字符:

在 grepl(b[b <= 3],df$b) 中:(参数 'pattern' 的长度 > 1 并且只使用第一个元素)

4

1 回答 1

0

grepl我认为您对如何(以及何时)使用正则表达式有点困惑。正则表达式用于查找字符串中的模式(例如确定“b”、“d”或“g”是否是 variable 的一部分b,可以使用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))

混淆可能是您试图弄清楚whichifelse 语句是 1 还是 0。为此,您可以使用which

df$c <- 0
df$c[which(b <= 3)] <- 1
于 2019-08-18T10:25:06.070 回答