2016-02-28 53 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'在這裏真的沒有必要。 –