Bagikan melalui


Mengubah data menggunakan R (tutorial SQL Server dan RevoScaleR)

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Ini adalah tutorial 9 dari seri tutorial RevoScaleR tentang cara menggunakan fungsi RevoScaleR dengan SQL Server.

Dalam tutorial ini, Anda akan mempelajari tentang fungsi RevoScaleR untuk mengubah data pada berbagai tahap analisis Anda.

  • Menggunakan rxDataStep untuk membuat dan mengubah subset data
  • Gunakan rxImport untuk mengubah data dalam transit ke atau dari file XDF atau bingkai data dalam memori selama impor

Meskipun tidak khusus untuk pergerakan data, fungsi rxSummary, rxCube, rxLinMod, dan rxLogit semuanya mendukung transformasi data.

Menggunakan rxDataStep untuk mengubah variabel

Fungsi rxDataStep memproses data satu gugus sekaligus, membaca dari satu sumber data dan menulis ke sumber data lainnya. Anda dapat menentukan kolom yang akan diubah, transformasi yang akan dimuat, dan sebagainya.

Untuk membuat contoh ini menarik, mari kita gunakan fungsi dari paket R lain untuk mengubah data. Paket boot adalah salah satu paket "direkomendasikan", yang berarti boot disertakan dengan setiap distribusi R, tetapi tidak dimuat secara otomatis pada start-up. Oleh karena itu, paket harus sudah tersedia pada instans SQL Server yang dikonfigurasi untuk integrasi R.

Dari paket boot , gunakan fungsi inv.logit, yang menghitung inversi logit. Artinya, fungsi inv.logit mengonversi logit kembali ke probabilitas pada skala [0,1].

Tip

Cara lain untuk mendapatkan prediksi dalam skala ini adalah dengan mengatur parameter jenis untuk merespons dalam panggilan asli ke rxPredict.

  1. Mulailah dengan membuat sumber data untuk menyimpan data yang ditujukan untuk tabel, ccScoreOutput.

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. Tambahkan sumber data lain untuk menyimpan data untuk tabel ccScoreOutput2.

    sqlOutScoreDS2 <- RxSqlServerData( table =  "ccScoreOutput2",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    

    Dalam tabel baru, simpan semua variabel dari tabel sebelumnya ccScoreOutput , ditambah variabel yang baru dibuat.

  3. Atur konteks komputasi ke instans SQL Server.

    rxSetComputeContext(sqlCompute)
    
  4. Gunakan fungsi rxSqlServerTableExists untuk memeriksa apakah tabel ccScoreOutput2 output sudah ada; dan jika demikian, gunakan fungsi rxSqlServerDropTable untuk menghapus tabel.

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. Panggil fungsi rxDataStep, dan tentukan transformasi yang diinginkan dalam daftar.

    rxDataStep(inData = sqlOutScoreDS,
        outFile = sqlOutScoreDS2,
        transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)),
        transformPackages = "boot",
        overwrite = TRUE)
    

    Saat Anda menentukan transformasi yang diterapkan ke setiap kolom, Anda juga dapat menentukan paket R tambahan yang diperlukan untuk melakukan transformasi. Untuk informasi selengkapnya tentang jenis transformasi yang dapat Anda lakukan, lihat Cara mengubah dan subset data menggunakan RevoScaleR.

  6. Panggil rxGetVarInfo untuk melihat ringkasan variabel dalam himpunan data baru.

rxGetVarInfo(sqlOutScoreDS2)

Hasil

Var 1: ccFraudLogitScore, Type: numeric
Var 2: state, Type: character
Var 3: gender, Type: character
Var 4: cardholder, Type: character
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: ccFraudProb, Type: numeric

Skor logit asli dipertahankan, tetapi kolom baru, ccFraudProb, telah ditambahkan, di mana skor logit diwakili sebagai nilai antara 0 dan 1.

Perhatikan bahwa variabel faktor telah ditulis ke tabel ccScoreOutput2 sebagai data karakter. Untuk menggunakannya sebagai faktor dalam analisis berikutnya, gunakan parameter colInfo untuk menentukan tingkat.

Langkah berikutnya