English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ملف CSV في R

بصفتها أداة إحصائية محترفة، إذا كان يمكن استيراد وتصدير البيانات بشكل يدوي فقط، فإن ذلك سيجعل وظائفها بلا معنى، لذا يدعم R استيراد البيانات بشكل جماعي من نماذج ملفات التخزين الجداولية الشائعة (مثل CSV،Excel،XML وما إلى ذلك).

تفاعل جدول CSV

CSV (Comma-Separated Values،CSV،أحيانًا يُطلق عليه أيضًا قيم فصل الكاراكتر، لأن علامة الفصل يمكن أن تكون ليست كوما) هو نمط ملف تخزين جدولي شائع جدًا، هذا النمط مناسب لتخزين بيانات نطاق متوسط أو صغير.

بما أن معظم البرمجيات تدعم هذا نمط الملف، فإنه يستخدم عادةً للحفظ والتفاعل مع البيانات.

CSV هو نص أساسي، ومدفوعته بسيطة للغاية: يتم حفظ البيانات سطرًا سطرًا باستخدام النص، ويتم تقسيم كل سجل إلى حقول باستخدام علامة الفصل، وكل سجل يحتوي على نفس سلسلة الحقول.

هذا هو ملف sites.csv البسيط (يخزن في نفس مجلد برنامج الاختبار):

id,name,url,likes
1,Google,www.google.com,111
2,w3codebox,ar.oldtoolbag.com,222
3,Taobao,www.taobao.com,333

CSV يستخدم الـcomma لـsplit الـcolumns، إذا كان الـdata يحتوي على الـcomma، يجب استخدام الـdouble quotes لـinclude الـentire الـdata block.

الـملاحظة:الـtext الـcontains الـnon-English يجب الانتباه إلى التـencoding الـsaved، بسبب أن العديد من الحواسيب تستخدم التـencoding الـUTF-8 بشكل واسع، لذا أنا أستخدم UTF-8 للـsave.

الـملاحظة: يحتاج سطر الـlast الـCSV إلى احتفاظ بـspace الـempty، وإلا ستظهر رسالة تحذير عند تشغيل البرنامج.

رسالة تحذير:
في func الـread.table(file = file, header = header, sep = sep, quote = quote, :
  يُعثر على سطر نهاية غير مكتمل من قبل func الـreadTableHeader في 'sites.csv'

قراءة الـfile الـCSV

الآن يمكننا استخدام func الـread.csv() لقراءة بيانات الـfile الـCSV:

data <- read.csv("sites.csv", encoding="UTF-8")
print(data)

إذا لم يتم تعيين خاصية الـencoding، فإن func الـread.csv() سيتم قراءته بشكل افتراضي باستخدام التـencoding الـdefault لنظام التشغيل، إذا كنت تستخدم نظام التشغيل Windows الـChinese Edition وليس قد تم تعيين التـencoding الـdefault للنظام، فإن التـencoding الـdefault للنظام يجب أن يكون GBK. لذا، يرجى محاولة التـuniformity في التـencoding الـtext لتجنب الأخطاء.

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

  id name               url likes
1 1 Google www.google.com 111
2 2 w3codebox ar.oldtoolbag.com 222
3 3 Taobao www.taobao.com 333

func الـread.csv() يعود الـdata frame، يمكننا بسهولة معالجة الـdata الـstatistics، كـمثال، نحن ن查看 عدد الـrows وعدد الـcolumns:

data <- read.csv("sites.csv", encoding="UTF-8")
print(is.data.frame(data)) # التـحقق مما إذا كان الـdata هو frame
print(ncol(data)) # عدد الـcolumns
print(nrow(data)) # عدد الـrows

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

[1] TRUE
[1] 4
[1] 3

كـمثال، الـ统计数据 الـframe الـlikes الأكبر للـdata:

data <- read.csv("sites.csv", encoding="UTF-8")
# الـdata الـlikes الأكبر
like <- max(data$likes)
print(like)

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

[1] 333

نحن أيضًا يمكننا تحديد الشروط البحثية، مثل جملة SQL where الـquery الـdata، ويجب استخدام الدالة subset().

كـمثال، البحث عن الـdata الـlikes هو 222 إلى:

data <- read.csv("sites.csv", encoding="UTF-8")
# بيانات likes تساوي 222
retval <- subset(data, likes == 222)
print(retval)

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

  id name               url likes
2 2 w3codebox ar.oldtoolbag.com 222

الـملاحظةالـstatement الـcondition مساوية يستخدم ==.

العديد من الشروط تُستخدم وسم التفصل & كـمثال، البحث عن الـdata الـlikes أكبر من 1 الـname هو w3codebox:

data <- read.csv("sites.csv", encoding="UTF-8")
# الـlies أكبر من 1 الـname هو w3codebox الـdata
retval <- subset(data, likes > 1 & name == "w3codebox")
print(retval)

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

  id name               url likes
2 2 w3codebox ar.oldtoolbag.com 222

حفظ كملف CSV

يمكن استخدام لغة R write.csv()  ستقوم الوظيفة بحفظ البيانات كملف CSV.

باستمرار في المثال أعلاه، سنقوم بحفظ البيانات التي لديها likes تساوي 222 إلى ملف w3codebox.csv:

data <- read.csv("sites.csv", encoding="UTF-8")
# بيانات likes تساوي 222
retval <- subset(data, likes == 222)
# كتابة ملف جديد
write.csv(retval,"w3codebox.csv")
newdata <- read.csv("w3codebox.csv")
print(newdata)

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

 X id name               url likes
1 2          2 w3codebox ar.oldtoolbag.com 222

X من مجموعة البيانات newper، يمكن حذفها من خلال إعداد row.names = FALSE:

data <- read.csv("sites.csv", encoding="UTF-8")
# بيانات likes تساوي 222
retval <- subset(data, likes == 222)
# كتابة ملف جديد
write.csv(retval,"w3codebox.csv", row.names = FALSE)
newdata <- read.csv("w3codebox.csv")
print(newdata)

النتيجة التي يتم إخراجها من التنفيذ أعلاه هي:

  id name               url likes
1 2 w3codebox ar.oldtoolbag.com 222

بعد إكمال التنفيذ، سنرى أن ملف w3codebox.csv تم إنشاؤه بنجاح.