我在这里遇到问题。 我有一个数据表是这样的:用条件计算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. 任何人都可以帮助我吗?
我在这里遇到问题。 我有一个数据表是这样的:用条件计算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. 任何人都可以帮助我吗?
我们可以先创建'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}]
你几乎涵盖了所有的选项,除了'ifelse'也许 –
@DavidArenburg是的,我想如果我用'data.table'的'ifelse',我会得到一个downvote。 – akrun
大声笑,你不会,但是'ifelse'在这里真的没有必要。 –
那你试试?为什么它不起作用? – Heroka