创建变量,如果为负,则取1,否则取0

时间:2013-12-09 17:08:20

标签: r if-statement vector boolean conditional

我想从另一个变量Y创建变量X,如果Y为负,则取1,如果Y为正则取0。我做ifelse(Y[Y<0],1,0)但是如果Y [Y <0]则只显示1,而当Y> = 0时不显示0。

2 个答案:

答案 0 :(得分:4)

在斯蒂芬的回答中加入贾斯汀的评论:

Rgames> library(microbenchmark)
Rgames> negone <-function(x) ifelse(x<0,1,0)
Rgames> negtwo <-function(x) as.integer(x<0)
Rgames> longfoo <- -1e6:1e6
Rgames> microbenchmark(negone(longfoo),negtwo(longfoo),times=10)
Unit: milliseconds
            expr       min        lq    median        uq      max neval
 negone(longfoo) 602.49903 607.36539 616.70490 662.40269 819.8965    10
 negtwo(longfoo)  17.06902  17.55908  20.99846  24.52379  26.0333    10

答案 1 :(得分:1)

这是一个测试序列:

> Y=seq(-5,5,1)
> Y
 [1] -5 -4 -3 -2 -1  0  1  2  3  4  5

这是您在ifelse声明中的测试。

> Y[Y<0]
[1] -5 -4 -3 -2 -1

这并不意味着什么,

这可能是你的意思:

> ifelse(Y<0,1,0)
 [1] 1 1 1 1 1 0 0 0 0 0 0