R data.table自定义函数

时间:2017-05-20 14:46:23

标签: r data.table

我有一个数据集,我将其导入R作为data.table。其中一列是以分钟为单位的持续时间x(整数),如果x介于0和60之间(包括0),我想要一个60-x的新列,否则为0。我做到了这一点,但不是很优雅,我想知道最R的方式。

library(data.table)
dt <- data.table(x = c(60, 5, 0, 61, 47, 75))


defecit <- function(x){
if(x>0 & x<60)
{
60-x
}
else{0}
}

dataset$y = unlist(sapply(dataset$x,defecit))

1 个答案:

答案 0 :(得分:3)

我们可以用

来做到这一点
$example = explode(" ", $url);
echo $example[0];

如果包含负数,则

dt[, x1 := pmax(60-x, 0)]
dt
#    x x1
#1: 60  0
#2:  5 55
#3:  0 60
#4: 61  0
#5: 47 13
#6: 75  0

或者@Frank在评论中提到

dt[, x1 := 60 - x][x > 60 | x < 0, x1 := 0][]

数据

dt[, y := (60-x)*between(x,0,60)][]