替换MSR中的existng列

时间:2016-12-15 13:16:56

标签: microsoft-r

为什么以下MSR代码不能替换原始列“Var1”?

rxDataStep(inData = input_xdf, outFile = input_xdf, overwrite = TRUE,
       transforms = list(Var1 = as.numeric(Var1)),
       transformVars = c("Var1")
       )

2 个答案:

答案 0 :(得分:1)

TIME不允许您使用不同的变量类型覆盖变量。

您有两种选择:写入其他变量或写入其他文件。我添加了一些代码,表明两个解决方案都按照Select Convert(Time, GetDate()) 中的说明运行。正如评论中所述,在早期版本中有一点可能不起作用。我不完全确定这一点,所以代码应该让你知道。

MSR

答案 1 :(得分:1)

目前,RevoScaleR不支持更改xdf文件中变量的类型(即使您写入其他文件)。这样做的方法是创建一个新变量,删除旧变量,然后将新变量重命名为旧名称。

我建议使用transformFunc执行此操作(有关详细信息,请参阅?rxTransform),以便您可以创建新变量并删除旧变量,只需一步:

rxDataStep(inXdf, outXdf, transformFunc=function(varlst) {
    varlst$Var1b <- as.numeric(varlst$Var1)
    varlst$Var1 <- NULL
    varlst
}, transformVars="Var1")

# this is fast as it only modifies the xdf metadata, not the data itself
names(outXdf)[names(outXdf) == "Var1b"] <- "Var1"