R - Veritabanları

Veriler, İlişkisel veritabanı sistemleri normalleştirilmiş bir formatta saklanır. Bu nedenle, istatistiksel hesaplama yapmak için çok gelişmiş ve karmaşık Sql sorgularına ihtiyacımız olacak. Ancak R, MySql, Oracle, Sql server vb. Birçok ilişkisel veritabanına kolayca bağlanabilir ve onlardan bir veri çerçevesi olarak kayıtları alabilir. Veriler R ortamında mevcut olduğunda, normal bir R veri seti haline gelir ve tüm güçlü paketler ve işlevler kullanılarak işlenebilir veya analiz edilebilir.

Bu eğitimde, R'ye bağlanmak için referans veri tabanımız olarak MySql kullanacağız.

RMySQL Paketi

R, MySql veritabanı ile arasında yerel bağlantı sağlayan "RMySQL" adlı yerleşik bir pakete sahiptir. Bu paketi aşağıdaki komutu kullanarak R ortamına kurabilirsiniz.

install.packages("RMySQL")

R'yi MySql'e bağlama

Paket kurulduktan sonra, veritabanına bağlanmak için R'de bir bağlantı nesnesi oluşturuyoruz. Giriş olarak kullanıcı adı, şifre, veritabanı adı ve ana bilgisayar adını alır.

# Create a connection Object to MySQL database.
# We will connect to the sampel database named "sakila" that comes with MySql installation.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',
   host = 'localhost')

# List the tables available in this database.
 dbListTables(mysqlconnection)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

[1] "actor"                      "actor_info"                
 [3] "address"                    "category"                  
 [5] "city"                       "country"                   
 [7] "customer"                   "customer_list"             
 [9] "film"                       "film_actor"                
[11] "film_category"              "film_list"                 
[13] "film_text"                  "inventory"                 
[15] "language"                   "nicer_but_slower_film_list"
[17] "payment"                    "rental"                    
[19] "sales_by_film_category"     "sales_by_store"            
[21] "staff"                      "staff_list"                
[23] "store"

Tabloları Sorgulama

MySql'deki veritabanı tablolarını fonksiyonu kullanarak sorgulayabiliriz dbSendQuery(). Sorgu MySql'de çalıştırılır ve sonuç kümesi R kullanılarak döndürülür.fetch()işlevi. Son olarak, R'de bir veri çerçevesi olarak saklanır.

# Query the "actor" tables to get all the rows.
result = dbSendQuery(mysqlconnection, "select * from actor")

# Store the result in a R data frame object. n = 5 is used to fetch first 5 rows.
data.frame = fetch(result, n = 5)
print(data.fame)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

actor_id   first_name    last_name         last_update
1        1         PENELOPE      GUINESS           2006-02-15 04:34:33
2        2         NICK          WAHLBERG          2006-02-15 04:34:33
3        3         ED            CHASE             2006-02-15 04:34:33
4        4         JENNIFER      DAVIS             2006-02-15 04:34:33
5        5         JOHNNY        LOLLOBRIGIDA      2006-02-15 04:34:33

Filtre Maddeli Sorgu

Sonucu almak için herhangi bir geçerli seçme sorgusunu geçebiliriz.

result = dbSendQuery(mysqlconnection, "select * from actor where last_name = 'TORN'")

# Fetch all the records(with n = -1) and store it as a data frame.
data.frame = fetch(result, n = -1)
print(data)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

actor_id    first_name     last_name         last_update
1        18         DAN            TORN              2006-02-15 04:34:33
2        94         KENNETH        TORN              2006-02-15 04:34:33
3       102         WALTER         TORN              2006-02-15 04:34:33

Tablolardaki Satırları Güncelleme

Güncelleme sorgusunu dbSendQuery () işlevine ileterek bir Mysql tablosundaki satırları güncelleyebiliriz.

dbSendQuery(mysqlconnection, "update mtcars set disp = 168.5 where hp = 110")

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında tablonun güncellendiğini görebiliriz.

Tablolara Veri Ekleme

dbSendQuery(mysqlconnection,
   "insert into mtcars(row_names, mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb)
   values('New Mazda RX4 Wag', 21, 6, 168.5, 110, 3.9, 2.875, 17.02, 0, 1, 4, 4)"
)

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında tabloya eklenen satırı görebiliriz.

MySql'de Tablo Oluşturma

MySql'de fonksiyonu kullanarak tablolar oluşturabiliriz dbWriteTable(). Zaten varsa tablonun üzerine yazar ve girdi olarak bir veri çerçevesi alır.

# Create the connection object to the database where we want to create the table.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila', 
   host = 'localhost')

# Use the R data frame "mtcars" to create the table in MySql.
# All the rows of mtcars are taken inot MySql.
dbWriteTable(mysqlconnection, "mtcars", mtcars[, ], overwrite = TRUE)

Yukarıdaki kodu çalıştırdıktan sonra MySql Ortamında oluşturulan tabloyu görebiliriz.

MySql'de Tabloları Bırakma

Drop table deyimini dbSendQuery () 'ye ileterek MySql veritabanındaki tabloları, tablolardan veri sorgulamak için kullandığımız gibi bırakabiliriz.

dbSendQuery(mysqlconnection, 'drop table if exists mtcars')

Yukarıdaki kodu çalıştırdıktan sonra tablonun MySql Ortamına düştüğünü görebiliriz.