我试图在R中创建一个指示符变量Z,即如果我有一些事件A,我希望Z如果A为真则给出结果为1,如果A为假则给出0。 我试过这个:
Z=0
if(A==(d>=5 && d<=10))
{
Z=1
}
else
{
Z=0
}
但这不起作用。我也在想我可以尝试编写一个名为指标的单独函数:
indicator = function()
任何建议都会非常有用,谢谢
答案 0 :(得分:3)
您可以轻松编写类似这样的内容
indicator<-function(condition) ifelse(condition,1,0)
ifelse
可用于向量,但它对单个逻辑值(TRUE或FALSE)完全正常。
答案 1 :(得分:2)
布尔人FALSE
/ TRUE
可以被强制为0
或1
,然后成倍增加:
Indicator<-function(x, min=0, max=Inf)
{
as.numeric(x >= min) * as.numeric(x <= max)
}
答案 2 :(得分:0)
您可以使用
a <- data.frame(a = -5:5, b = 1:11)
indicator <- function(data) I(data > 0) + 1 - 1
indicator(a)
a
可以是矢量,数据帧...
您可以根据自己的喜好尝试I
函数中的逻辑。
答案 3 :(得分:-1)
无需定义A,只需测试条件即可。
另外,请记住&&
和&
在R中有不同的用途(有关详细信息,请参阅R - boolean operators && and ||),因此这可能是您问题的一部分。
if (d>=5 & d<=10)
{
Z <- 1
}
else
{
Z <- 0
}
或者,正如其他答案所建议的那样使用ifelse
:
z <- ifelse((d>=5 & d<=10), 1, 0)