为什么以下MSR代码不能替换原始列“Var1”?
rxDataStep(inData = input_xdf, outFile = input_xdf, overwrite = TRUE,
transforms = list(Var1 = as.numeric(Var1)),
transformVars = c("Var1")
)
答案 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"