2017-06-29 13 views
1

Microsoft RのRxSqlServerData()を使用してSQL Serverデータベースからテーブルをインポートする際に、少し問題があります。 SQLサーバーのデータベースには、空白とNULL値の両方を持つ行が含まれています。私はRxSqlServerDataを実行すると、これらの値を「行方不明」としてインポート取得の両方、具体的には、<NA>Microsoft R ServerのSQL NULL値または欠損値

は、私が要因、たとえば、「なし」または類似したものとして、これらをインポートすることができcolInfo引数で指定できるものがあります。

ありがとうございました。

+0

RODBCまたはodbcで同じ結果が得られますか? –

答えて

1

データをインポートした後で、rxDataStep関数を使用し、transforms引数に欠損値の処理方法を定義します。

例として、いくつかの列を含む表があり、列の一部にNULL値があります。または、文字列の場合は空の文字列になる可能性があります。私のテーブル定義はそうのようになります。

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 

RowID Col1 Col2 Col3 
    1  1  1 Missing Hello 
    2  2 Missing  2 world 
    3  3  3  1 Missing 
    4  4  4  2 Again 

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を表示するときに続いて、私はこれを取得:私は上記のように、私は何ができるかをこの段階で

は、rxDataStep機能とtransforms引数を使用することです

もちろん、元のクエリの欠損値も処理できます。それはおそらく私がやることです。

希望すると便利です。

Niels

関連する問題