دادهها را در سیستمهای پایگاهداده رابطهای (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
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس