Таким образом, после того, как вы импортировали данные, вы можете использовать функцию rxDataStep
, а в аргументе transforms
вы определяете, как следует обрабатывать отсутствующие значения.
Примером этого является то, что у меня есть таблица с некоторыми столбцами, а некоторые из столбцов имеют нулевые значения или - в случае строковых столбцов - потенциально пустую строку. Мое определение таблицы выглядит так:
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
Конечно, вы также можете обработать отсутствующие значения в исходном запросе. Это, наверное, то, что я бы сделал.
Надеюсь это поможет!
Нильс
person
Niels Berglund
schedule
05.07.2017