繁体   English   中英

Azure ML 和 r 脚本

[英]Azure ML and r scripts

我有带列的数据框

date    open    high    low     close   adjclose    volume

我想再添加一列名为“结果”的列(如果关闭> 打开,则为 1,如果关闭 < 打开则为 0)

我愿意

# Map 1-based optional input ports to variables
data <- maml.mapInputPort(1) # class: data.frame



# calculate pass/fail
data$result <- as.factor(sapply(data$close,function(res) 
    if (res - data$open >= 0) '1' else '0'))

# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("data");

但我只有 1 结果。 问题出在哪儿?

if/else只能返回单个 TRUE/FALSE,并且不会对长度 > 1 进行向量化。它可能适合使用ifelse (但这也不是必需的,并且与将逻辑向量直接转换为二进制相比效率较低( as.integer )。在 OP 的代码中,“关闭”列元素被循环( sapply )并从整个“打开”列中减去。目的可能是进行元素减法。在这种情况下, -列之间是很多更干净和高效(因为这些操作是矢量化的)

data$result <- with(data, factor(as.integer((close - open) >= 0)))

在上面,我们得到列之间的差异('close','open'),检查它是否大于或等于0(返回逻辑向量),将其转换为二进制( as.integer - TRUE -> 1 , FALSE -> 0) 然后将其更改为factor类型(如果需要)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM