2016-02-28 41 views
-5

我在这里遇到问题。 我有一个数据表是这样的:用条件计算data.table

a <- data.table(a=c(1,2,3,50,100,300,700)) 
    a 
1: 1 
2: 2 
3: 3 
4: 50 
5: 100 
6: 300 
7: 700 

现在我想创建一个新的列b与b=125-0.25a,但是用条件是b> = 0。如果b < 0那么它会给出结果0. 任何人都可以帮助我吗?

+2

那你试试?为什么它不起作用? – Heroka

回答

2

我们可以先创建'b'列,然后为'b'中小于0的元素赋值(:=)0值。

a[, b:= 125- 0.25*a][b<0, b:=0] 

或者我们可以使用pmax来获得预期的输出。

a[, b:= pmax(125-0.25*a, 0)] 

或者

a[, b:= {tmp <- 125 - 0.25*a; (tmp > 0)*tmp}] 
+0

你几乎涵盖了所有的选项,除了'ifelse'也许 –

+1

@DavidArenburg是的,我想如果我用'data.table'的'ifelse',我会得到一个downvote。 – akrun

+1

大声笑,你不会,但是'ifelse'在这里真的没有必要。 –