دادهها را در سیستمهای پایگاهداده رابطهای (Relational Database Systems) بهصورت نرمالسازیشده ذخیره میکنیم. بنابراین برای محاسبات آماری، به پرسوجوهای بسیار پیشرفته و پیچیده SQL نیاز داریم. بااینحال، شما میتوانید با R بهسادگی به پایگاههای دادهای مانند MySQL، Oracle و SQL Server متصل شوید و رکوردها را به شکل یک Data Frame دریافت کنید. وقتی دادهها را وارد محیط R میکنید، آنها به یک مجموعهداده معمولی R تبدیل میشوند و شما میتوانید با همه بستهها و توابع قدرتمند، آنها را تحلیل یا پردازش کنید.
در این آموزش از پایگاهداده MySQL بهعنوان مرجع اتصال به R استفاده میکنیم.
بسته RMySQL
زبان R بسته داخلی RMySQL را در اختیار دارد و این بسته اتصال مستقیم به پایگاهداده MySQL را فراهم میکند. این بسته را با دستور زیر در محیط R نصب کنید:
| 1 | install.packages("RMySQL") | 
اتصال R به MySQL
پس از نصب بسته، یک شیء اتصال (Connection Object) در R میسازیم و به پایگاهداده وصل میشویم. این شیء نام کاربری، گذرواژه، نام پایگاهداده و نام میزبان را میگیرد.
| 1 2 3 4 5 6 7 | # ایجاد شیء اتصال به پایگاهداده MySQL # در این مثال به پایگاهدادهٔ نمونهای به نام "sakila" که همراه نصب MySQL وجود دارد، متصل میشویم. mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',    host = 'localhost') # فهرست جداول موجود در این پایگاهداده dbListTables(mysqlconnection) | 
| 1 2 3 4 5 6 7 8 9 10 11 12 |  [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" | 
اجرای پرسوجو روی جداول
برای پرسوجو از جداول پایگاهداده در MySQL میتوانید از تابع dbSendQuery() استفاده کنید. این پرسوجو در MySQL اجرا میشود و تابع fetch() در R نتایج را بازیابی میکند. در نهایت دادهها در قالب یک Data Frame در R ذخیره میشوند.
| 1 2 3 4 5 6 | # اجرای پرسوجو روی جدول "actor" برای دریافت همهٔ ردیفها result = dbSendQuery(mysqlconnection, "select * from actor") # ذخیرهٔ نتیجه در یک شیء Data Frame در R. مقدار n = 5 یعنی ۵ ردیف اول استخراج شوند. data.frame = fetch(result, n = 5) print(data.frame) | 
| 1 2 3 4 5 6 |         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 | 
پرسوجو با شرط فیلتر (Filter Clause)
شما میتوانید هر دستور SELECT معتبر را برای دریافت نتیجه استفاده کنید:
| 1 2 3 4 5 | result = dbSendQuery(mysqlconnection, "select * from actor where last_name = 'TORN'") # استخراج همهٔ رکوردها (با n = -1) و ذخیره بهصورت Data Frame data.frame = fetch(result, n = -1) print(data.frame) | 
| 1 2 3 4 |         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 | 
بهروزرسانی ردیفها در جدول
برای بهروزرسانی دادهها در جدول MySQL کافی است دستور UPDATE را از طریق تابع dbSendQuery() اجرا کنید:
| 1 | dbSendQuery(mysqlconnection, "update mtcars set disp = 168.5 where hp = 110") | 
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۲۵ شهریور ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
 
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
 
- نرم افزار و ابزار برنامه نویسی
- وردپرس
 











