R Academy · درس

قراءة ملفات CSV باستخدام read_csv()

استورد الملفات المحدّدة بفواصل مع خيارات تخمين أنواع الأعمدة والتخطي والترميز.

الدرس 1 من 413 خطوة

قراءة ملفات CSV باستخدام read_csv() درس مجاني في R Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.

لماذا نستخدم readr بدلًا من Base R؟

توفّر Base R الدالة read.csv()، لكن الدالة read_csv() في حزمة readr أسرع، وتُرجع tibble بدلًا من data frame، وتوفّر تخمينًا أفضل للأنواع افتراضيًا، كما تعرض رسائل مفيدة حول أنواع الأعمدة التي اكتشفتها.

library(readr)

# read_csv() vs read.csv():
# 1. Returns a tibble (prints nicely, faster subsetting)
# 2. Does NOT convert strings to factors by default
# 3. Shows column specification message
# 4. Faster for large files

# Example with a simple inline CSV:
df <- read_csv('name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C')

print(df)
print(class(df))

read_csv() من مسار ملف

الاستخدام الأكثر شيوعًا هو تمرير سلسلة نصية تمثّل مسار ملف إلى read_csv(). تكتشف الدالة الفاصل تلقائيًا باعتباره فاصلة، وتقرأ الصف الأول بوصفه عناوين، وتخمّن أنواع الأعمدة من أول 1000 صف.

library(readr)

# Reading from a file path (illustrative — file not present)
# df <- read_csv('data/sales_2024.csv')

# Reading from a URL also works:
# df <- read_csv('https://example.com/data.csv')

# Using a literal inline string for demonstration:
df <- read_csv('region,q1,q2,q3
East,100,120,115
West,200,195,210
North,80,85,90')

print(df)

col_types — تحديد أنواع الأعمدة

استخدم col_types لتجاوز تخمين الأنواع في readr. مرّر سلسلة مختصرة (حرف واحد لكل عمود: c=character، d=double، i=integer، l=logical، D=date، _=skip) أو مواصفة cols().

library(readr)

df <- read_csv('id,date,amount,active
1,2024-01-15,99.99,TRUE
2,2024-02-20,149.50,FALSE
3,2024-03-10,75.00,TRUE',
# Compact: integer, Date, double, logical
col_types = 'iDdl')

print(df)
cat('\nColumn types:\n')
print(sapply(df, class))

cols() لتحديد الأنواع صراحةً

لمزيد من التحكّم، استخدم cols() لتحديد نوع كل عمود باسمه. استخدم دوال التجميع: col_double() وcol_character() وcol_integer() وcol_date(format=) وcol_skip() وcol_guess().

library(readr)

df <- read_csv('id,name,score,date
1,Alice,85.5,2024-01-15
2,Bob,92.0,2024-02-20
3,Carol,78.3,2024-03-10',
col_types = cols(
  id = col_integer(),
  name = col_character(),
  score = col_double(),
  date = col_date(format = '%Y-%m-%d')
))

print(df)
print(class(df$date))

المعاملان skip وn_max

يتجاوز skip=n أول n أسطر قبل القراءة، وهو مفيد للبيانات الوصفية أو عناوين التعليقات. وتقرأ n_max=n ما لا يزيد على n صفوف من البيانات — وهذا مناسب لمعاينة الملفات الكبيرة أو تحميل الجزء الأول فقط.

library(readr)

# File with metadata in first 2 lines
# (simulated with literal string)
df <- read_csv('# Generated 2024-01-15
# Source: internal DB
name,score,grade
Alice,85,B
Bob,92,A
Carol,78,C
Dave,88,B',
skip = 2,     # Skip the 2 comment lines
n_max = 3     # Read only 3 data rows
)

print(df)

المعامل na — تعريف القيم المفقودة

تتعامل read_csv() افتراضيًا مع السلاسل الفارغة وNA على أنها قيم مفقودة. استخدم المعامل na لتحديد سلاسل إضافية ينبغي قراءتها باعتبارها NA — ومن الأمثلة الشائعة: 'N/A' و'NULL' و'-999' و'.'.

library(readr)

df <- read_csv('name,score,city
Alice,85,NYC
Bob,N/A,NULL
Carol,78,.
Dave,-999,Chicago',
na = c('', 'NA', 'N/A', 'NULL', '.', '-999')
)

print(df)
cat('NAs per column:\n')
print(colSums(is.na(df)))

col_names — أسماء أعمدة مخصّصة

عيّن col_names = FALSE عندما لا يحتوي الملف على صف عناوين؛ إذ ستسمّي readr الأعمدة تلقائيًا X1 وX2 وغيرهما. وبدلًا من ذلك، مرّر متجهًا من character إلى col_names لتحديد أسماء مخصّصة وتجاوز صف العناوين.

library(readr)

# File without headers
df <- read_csv('Alice,85,NYC
Bob,92,LA
Carol,78,Chicago',
col_names = c('name','score','city')
)

print(df)

# auto-names when no header:
df2 <- read_csv('1,2,3
4,5,6', col_names = FALSE)
print(df2)

locale() — التعامل مع التنسيقات غير القياسية

تتحكّم locale() في كيفية تفسير readr للتنسيقات الخاصة بالإعدادات المحلية: فواصل الكسور العشرية (مثل ',' في البيانات الأوروبية)، وتنسيقات التاريخ، والترميز، وفواصل تجميع الآلاف. مرّرها إلى read_csv(locale=...).

library(readr)

# European-style CSV: semicolons as delimiters, comma as decimal
# read_csv2() is shorthand for this locale
df <- read_csv2('name;price;qty
Alice;9,99;100
Bob;24,50;50',
locale = locale(decimal_mark=',')
)

print(df)

# For dates in non-ISO format:
parse_date('15/01/2024', format='%d/%m/%Y')

progress وshow_col_types

تعرض read_csv() شريط تقدّم عند قراءة الملفات الكبيرة. عيّن progress=FALSE لإخفائه، وهو مفيد في النصوص البرمجية. ويؤدي show_col_types=FALSE إلى إخفاء رسالة أنواع الأعمدة عندما تكون قد تحقّقت منها مسبقًا.

library(readr)

# Suppress progress and type messages for production scripts
df <- read_csv(
  'a,b,c
  1,x,TRUE
  2,y,FALSE',
  show_col_types = FALSE,
  progress = FALSE
)

print(df)

problems() — تشخيص إخفاقات التحليل

عندما تواجه readr قيمًا لا تطابق النوع المتوقّع، تستبدلها بـ NA وتسجّل تحذيرًا. استدعِ problems(df) لفحص الصفوف والأعمدة التي حدثت فيها المشكلات بدقة، ومعرفة القيم الأصلية.

library(readr)

# Intentional type mismatch: 'N/A' in numeric column
df <- suppressWarnings(read_csv(
  'id,score
  1,85
  2,N/A
  3,92',
  col_types = cols(score = col_double())
))

print(df)
print(problems(df))

قراءة ملفات متعددة باستخدام map()

ادمج readr مع purrr::map() لقراءة ملفات CSV متعددة ودمج صفوفها في خطوة واحدة. ويُعدّ هذا النمط أساسيًا لمعالجة تقسيمات البيانات الشهرية أو الفصلية المخزّنة في ملفات منفصلة.

library(readr)
library(purrr)
library(dplyr)

# Simulated: read and bind multiple CSV files
files <- c('q1.csv', 'q2.csv', 'q3.csv')

# In practice:
# all_data <- map_df(files, read_csv, show_col_types=FALSE)

# Demonstration with inline data:
q1 <- read_csv('month,sales\nJan,100\nFeb,120', show_col_types=FALSE)
q2 <- read_csv('month,sales\nApr,130\nMay,145', show_col_types=FALSE)

bind_rows(list(q1=q1, q2=q2), .id='quarter')

تحقّق سريع

كيف تخبر read_csv() بأن القيم 'N/A' و'-99' ينبغي التعامل معها على أنها مفقودة (NA)؟

مراجعة: read_csv() مع readr

أهم النقاط حول قراءة ملفات CSV باستخدام readr:

  • read_csv('file.csv') — قراءة CSV وإرجاع tibble وتخمين أنواع الأعمدة
  • col_types = 'idcl' أو cols(x=col_double()) — تحديد الأنواع صراحةً
  • skip=n — تجاوز صفوف العناوين أو البيانات الوصفية؛ وn_max=n — تحديد عدد الصفوف المقروءة
  • na = c('N/A','NULL') — التعامل مع سلاسل إضافية على أنها NA
  • locale(decimal_mark=',') — التعامل مع تنسيقات الأرقام الأوروبية
  • show_col_types=FALSE — إخفاء معلومات الأنواع في النصوص البرمجية
  • problems(df) — فحص إخفاقات التحليل
  • الدمج مع map_df(files, read_csv) لمعالجة ملفات متعددة
library(readr)

# Production-ready read_csv() call
df <- read_csv(
  'name,score,city,active
  Alice,85,NYC,TRUE
  Bob,N/A,LA,FALSE
  Carol,78,NULL,TRUE',
  col_types = cols(
    name = col_character(),
    score = col_double(),
    city = col_character(),
    active = col_logical()
  ),
  na = c('', 'NA', 'N/A', 'NULL'),
  show_col_types = FALSE
)

print(df)
البدء مجانًا

تعلم R مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
43
الدروس
159

الأسئلة الشائعة

هل درس «قراءة ملفات CSV باستخدام read_csv()» مجاني؟

نعم — نص درس «قراءة ملفات CSV باستخدام read_csv()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا ستتعلم في «قراءة ملفات CSV باستخدام read_csv()»؟

استورد الملفات المحدّدة بفواصل مع خيارات تخمين أنواع الأعمدة والتخطي والترميز. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟

لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «قراءة ملفات CSV باستخدام read_csv()»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟

نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة ملفات CSV باستخدام read_csv()
  2. تحليل ملفات TSV وذات العرض الثابت
  3. استيراد ملفات Excel باستخدام readxl
  4. كتابة البيانات بتنسيقات متعددة
← العودة إلى R Academy