Microsoft R 服务器 SQL NULL/Missing 值
Microsoft R Server SQL NULL/Missing values
我在使用 Microsoft R 中的 RxSqlServerData() 从 SQL 服务器数据库导入 table 时遇到了一些问题。 SQL 服务器中的我的数据库包含同时具有空白值和 NULL 值的行。当我 运行 RxSqlServerData 时,这些都作为 "missing" 值导入,具体来说,<NA>
我是否可以在 colInfo
参数中指定可以将这些作为因子导入的内容,例如 "None" 或类似内容。
谢谢。
因此,在导入数据后,您可以使用 rxDataStep
函数,并在 transforms
参数中定义应如何处理缺失值。
这方面的一个例子是,我有一个 table,其中一些列和一些列有空值,或者 - 在字符串列的情况下 - 可能是空字符串。我的 table 定义如下所示:
CREATE TABLE dbo.tb_MissingValue(RowID int identity PRIMARY KEY,
Col1 int,
Col2 int,
Col3 varchar(50))
而且我已经像这样插入了数据:
INSERT INTO dbo.tb_MissingValue(Col1, Col2, Col3)
VALUES (1, null, 'Hello'),
(null, 2, 'world'),
(3, 1, ''),
(4, 2, 'Again');
我的 R 代码看起来像这样从数据库中检索数据:
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
时,我得到:
RowID Col1 Col2 Col3
1 1 1 Missing Hello
2 2 Missing 2 world
3 3 3 1 Missing
4 4 4 2 Again
您当然也可以处理原始查询中的缺失值。这可能就是我要做的。
希望对您有所帮助!
尼尔斯
我在使用 Microsoft R 中的 RxSqlServerData() 从 SQL 服务器数据库导入 table 时遇到了一些问题。 SQL 服务器中的我的数据库包含同时具有空白值和 NULL 值的行。当我 运行 RxSqlServerData 时,这些都作为 "missing" 值导入,具体来说,<NA>
我是否可以在 colInfo
参数中指定可以将这些作为因子导入的内容,例如 "None" 或类似内容。
谢谢。
因此,在导入数据后,您可以使用 rxDataStep
函数,并在 transforms
参数中定义应如何处理缺失值。
这方面的一个例子是,我有一个 table,其中一些列和一些列有空值,或者 - 在字符串列的情况下 - 可能是空字符串。我的 table 定义如下所示:
CREATE TABLE dbo.tb_MissingValue(RowID int identity PRIMARY KEY,
Col1 int,
Col2 int,
Col3 varchar(50))
而且我已经像这样插入了数据:
INSERT INTO dbo.tb_MissingValue(Col1, Col2, Col3)
VALUES (1, null, 'Hello'),
(null, 2, 'world'),
(3, 1, ''),
(4, 2, 'Again');
我的 R 代码看起来像这样从数据库中检索数据:
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
时,我得到:
RowID Col1 Col2 Col3
1 1 1 Missing Hello
2 2 Missing 2 world
3 3 3 1 Missing
4 4 4 2 Again
您当然也可以处理原始查询中的缺失值。这可能就是我要做的。
希望对您有所帮助!
尼尔斯