Microsoft R Server SQL NULL /缺少值

时间:2017-06-29 03:53:59

标签: sql-server r microsoft-r

我在使用Microsoft R中的RxSqlServerData()从SQL Server数据库导入表时遇到了一些问题。我在SQL Server中的数据库包含具有空白和NULL值的行。当我运行RxSqlServerData时,它们都被导入为“缺失”值,具体来说,<NA>

我可以在colInfo参数中指定哪些内容可以将这些内容作为因素导入,例如“无”或类似内容。

感谢。

1 个答案:

答案 0 :(得分:1)

因此,在导入数据后,您可以使用p =mul(p, float2x2(sc.y,-sc.x,sc));函数,并在rxDataStep参数中定义应如何处理缺失值。

这方面的一个例子是,我有一个表有一些列,有些列有空值,或者 - 在字符串列的情况下 - 可能是空字符串。我的表定义如下:

transforms

我插入的数据如下:

CREATE TABLE dbo.tb_MissingValue(RowID int identity PRIMARY KEY,
                                 Col1 int,
                                 Col2 int,
                                 Col3 varchar(50))

我的R代码看起来像是从数据库中检索数据:

INSERT INTO dbo.tb_MissingValue(Col1, Col2, Col3)
VALUES (1, null, 'Hello'),
        (null, 2, 'world'),
        (3, 1, ''),
        (4, 2, 'Again');

查看connString <- "Driver=SQL Server; Server=win10-dev; Database=RTest; Uid=sa; Pwd=secret_stuff" missingData <- RxSqlServerData(connectionString = connString, sqlQuery = "SELECT * FROM dbo.tb_MissingValue") 数据框中的数据,如下所示:

missingData

在这个阶段我可以做的是使用 RowID Col1 Col2 Col3 1 1 1 NA Hello 2 2 NA 2 world 3 3 3 1 <NA> 4 4 4 2 Again 函数和rxDataStep参数,就像我上面提到的那样:

transforms

然后当我查看数据nonMissing <- rxDataStep(inData = missingData, transforms = list( Col1 = ifelse(is.na(Col1), "Missing", Col1), Col2 = ifelse(is.na(Col2), "Missing", Col2), Col3 = ifelse(is.na(Col3), "Missing", Col3))) 时,我得到了这个:

nonMissing

您当然也可以处理原始查询中的缺失值。那可能就是我要做的事。

希望这有帮助!

尼尔斯