72.3%
+18.4
3.2%
104B
8.7≈
+2.1%

1 المقدمة

شهد سوق العمل السعودي خلال الفترة 2021–2025 تحولات ملحوظة في عدد من المؤشرات الرئيسية، وفي مقدمتها معدل البطالة، والمشاركة في القوى العاملة، ومعدل المشتغلين، إلى جانب التغيرات في خصائص المتعطلين حسب العمر والمستوى التعليمي.

ويركز هذا التقرير على السعوديين فقط، بهدف تقديم قراءة أوضح للتحولات التي طرأت على سوق العمل الوطني خلال السنوات الأخيرة.

2 الأسئلة البحثية

  1. كيف تطور معدل البطالة بين السعوديين منذ 2021؟
  2. كيف تغيّرت البطالة حسب المناطق الإدارية؟
  3. كيف تحسن معدل المشاركة في القوى العاملة؟
  4. هل ارتفع معدل المشتغلين من السكان في سن العمل؟
  5. ما الفئات العمرية الأكثر تمثيلًا بين المتعطلين السعوديين؟

3 إعداد البيانات

file_path <- path
sheet_names <- excel_sheets(file_path)

all_data <- map(sheet_names, ~ read_excel(file_path, sheet = .x)) %>%
  set_names(sheet_names)

4 1) تطور معدل البطالة بين السعوديين

unemp <- all_data[["معدل البطالة حسب الجنسية والجنس"]]

unemp_yearly <- unemp %>%
  filter(nationality_gender %in% c("Saudi_Total", "Saudi_Male", "Saudi_Female")) %>%
  group_by(year, nationality_gender) %>%
  summarise(value = mean(value, na.rm = TRUE), .groups = "drop")

4.0.1 معدل البطالة الإجمالي للسعوديين

unemp_yearly %>%
  filter(nationality_gender == "Saudi_Total") %>%
  ggplot(aes(x = year, y = value)) +
  geom_line(linewidth = 1.4, color = "#2C7BB6") +
  geom_point(size = 3, color = "#2C7BB6") +
  theme_minimal(base_size = 14) +
  labs(
    title = "تطور معدل البطالة بين السعوديين (2021–2025)",
    x = "السنة",
    y = "معدل البطالة (%)"
  )

تفسير:

يوضح الشكل تطور معدل البطالة بين السعوديين خلال الفترة من 2021 إلى 2025، ويعكس المسار العام لتحسن أو تراجع فرص العمل المتاحة للمواطنين داخل سوق العمل.


4.0.2 معدل البطالة بين السعوديين حسب الجنس

unemp_yearly %>%
  filter(nationality_gender %in% c("Saudi_Male", "Saudi_Female")) %>%
  ggplot(aes(x = year, y = value, color = nationality_gender)) +
  geom_line(linewidth = 1.4) +
  geom_point(size = 3) +
  theme_minimal(base_size = 14) +
  scale_color_manual(
    values = c("Saudi_Male" = "#2563eb", "Saudi_Female" = "#ec4899"),
    labels = c("Saudi_Male" = "ذكور", "Saudi_Female" = "إناث")
  ) +
  labs(
    title = "معدل البطالة بين السعوديين حسب الجنس",
    x = "السنة",
    y = "معدل البطالة (%)",
    color = "الفئة"
  )

تفسير:

يبين الشكل الفروقات بين الذكور والإناث من السعوديين في معدل البطالة، ويساعد على قراءة التحولات في فرص العمل بين الجنسين خلال السنوات الأخيرة.

4.1 الخريطة الحرارية للبطالة حسب المنطقة (السعوديون فقط)

unemp_region <- all_data[["معدل البطالة حسب الجنسية وا (4)"]]

unemp_region_clean <- unemp_region %>%
  mutate(
    nationality_gender = trimws(as.character(nationality_gender)),
    category = trimws(as.character(category)),
    value = as.numeric(value),
    year = as.numeric(year),
    quarter = as.numeric(quarter)
  )

heat_df <- unemp_region_clean %>%
  filter(
    nationality_gender == "Saudi_Total",
    !is.na(category),
    !is.na(value),
    !category %in% c("الاجمالي", "الإجمالي", "المتوسط", "Average", "")
  ) %>%
  mutate(
    period = paste0(year, "-Q", quarter),
    region = category
  ) %>%
  select(region, period, value)

period_order <- heat_df %>%
  distinct(year = sub("-Q.*", "", period), quarter = sub(".*-Q", "", period), period) %>%
  mutate(
    year = as.numeric(year),
    quarter = as.numeric(quarter)
  ) %>%
  arrange(year, quarter) %>%
  pull(period)

region_order <- heat_df %>%
  group_by(region) %>%
  summarise(avg = mean(value, na.rm = TRUE), .groups = "drop") %>%
  arrange(avg) %>%
  pull(region)

heat_df <- heat_df %>%
  mutate(
    period = factor(period, levels = period_order),
    region = factor(region, levels = rev(region_order))
  )

4.1.1 الخريطة الحرارية الزمنية الكاملة

تفسير:

تكشف الخريطة الحرارية عن الفروقات الزمنية والمكانية في معدل البطالة بين السعوديين عبر المناطق الإدارية، وتُظهر كيف تحركت مستويات البطالة من ربع إلى آخر خلال الفترة محل الدراسة.

4.1.2 رحلة التحسن 2021 → 2025 حسب المنطقة

compare_df <- unemp_region %>%
  filter(
    nationality_gender == "Saudi_Total",
    year %in% c(2021, 2025),
    quarter == 4,
    !category %in% c("الإجمالي")
  ) %>%
  select(region = category, year, value) %>%
  pivot_wider(names_from = year, values_from = value) %>%
  mutate(
    change = `2021` - `2025`
  ) %>%
  arrange(desc(change))
compare_df %>%
  e_charts(region) %>%
  e_bar(
    `2021`,
    name = "متوسط 2021",
    itemStyle = list(color = "#ef4444", borderRadius = c(8,8,8,8))
  ) %>%
  e_bar(
    `2025`,
    name = "متوسط 2025",
    itemStyle = list(color = "#10b981", borderRadius = c(8,8,8,8))
  ) %>%
  e_flip_coords() %>%
  e_title(
    text = "رحلة التحسن 2021 ← 2025",
    subtext = "مقارنة معدل البطالة بين السعوديين حسب المنطقة",
    left = "right",
    textStyle = list(color = "#f8fafc", fontSize = 22, fontWeight = "bold"),
    subtextStyle = list(color = "#94a3b8", fontSize = 13)
  ) %>%
  e_legend(
    top = 20,
    textStyle = list(color = "#e2e8f0")
  ) %>%
  e_tooltip(trigger = "axis") %>%
  e_x_axis(
    axisLabel = list(color = "#cbd5e1"),
    axisLine = list(lineStyle = list(color = "#334155"))
  ) %>%
  e_y_axis(
    axisLabel = list(color = "#f8fafc", fontSize = 13, fontWeight = "bold"),
    axisLine = list(lineStyle = list(color = "#334155"))
  ) %>%
  e_grid(top = 100, left = 120, right = 40, bottom = 40) %>%
  e_theme("dark")

تفسير:

يعرض هذا الشكل رحلة التحسن في البطالة بين السعوديين عبر المناطق الإدارية، من خلال مقارنة آخر ربع من عام 2021 بآخر ربع من عام 2025، وهو ما يساعد على إبراز المناطق التي شهدت أكبر تحسن أو أبطأ تراجع.

4.2 معدل المشاركة في القوى العاملة (السعوديون)

part <- all_data[["معدل المشاركة في القوي العاملة "]]

part_yearly <- part %>%
  filter(nationality_gender == "Saudi_Total") %>%
  group_by(year) %>%
  summarise(value = mean(value, na.rm = TRUE), .groups = "drop")
ggplot(part_yearly, aes(x = year, y = value)) +
  geom_line(linewidth = 1.4, color = "#16a34a") +
  geom_point(size = 3, color = "#16a34a") +
  theme_minimal(base_size = 14) +
  labs(
    title = "معدل المشاركة في القوى العاملة بين السعوديين",
    x = "السنة",
    y = "معدل المشاركة (%)"
  )

تفسير:

يشير هذا المؤشر إلى مدى انخراط السعوديين في النشاط الاقتصادي، سواء من خلال العمل أو البحث عن عمل، وهو من المؤشرات الأساسية لقراءة ديناميكية سوق العمل.

5 متوسط الأجور حسب المستوى التعليمي في سوق العمل السعودي

wage_edu <- all_data[["متوسط ​​الاجر الشهري للمشتغلن ب"]]

wage_edu_clean <- wage_edu %>%
  mutate(
    nationality_gender = trimws(as.character(nationality_gender)),
    category = trimws(as.character(category)),
    value = as.numeric(value),
    year = as.numeric(year),
    quarter = as.numeric(quarter)
  ) %>%
  mutate(
    category = case_when(
      category %in% c("تعليم متوسط", "تعليم متوسط (عام او مهني)") ~ "تعليم متوسط",
      category %in% c("تعليم ثانوي", "تعليم ثانوي (عام او مهني)") ~ "تعليم ثانوي",
      category %in% c("بكالوريوس او مايعادلها", "بكالوريوس أو ما يعادلها") ~ "بكالوريوس أو ما يعادلها",
      category %in% c("ماجستير او ما يعادلها", "ماجستير أو ما يعادلها") ~ "ماجستير أو ما يعادلها",
      TRUE ~ category
    )
  )
edu_order <- c(
  "دكتوراه",
  "ماجستير أو ما يعادلها",
  "بكالوريوس أو ما يعادلها",
  "دبلوم متوسط",
  "دبلوم مشارك",
  "تعليم ثانوي",
  "تعليم متوسط",
  "تعليم ابتدائي",
  "تعليم الطفولة المبكرة",
  "لا يوجد شهادة تعليمية"
)

wage_heat_df <- wage_edu_clean %>%
  filter(
    nationality_gender == "Saudi_Total",
    category %in% edu_order,
    !is.na(value)
  ) %>%
  group_by(year, quarter, category) %>%
  summarise(value = mean(value, na.rm = TRUE), .groups = "drop") %>%
  mutate(
    period = paste0(year, "-Q", quarter),
    edu_level = category
  ) %>%
  select(edu_level, period, value)

period_order <- wage_heat_df %>%
  distinct(period) %>%
  mutate(
    year_num = as.numeric(sub("-Q.*", "", period)),
    q_num = as.numeric(sub(".*-Q", "", period))
  ) %>%
  arrange(year_num, q_num) %>%
  pull(period)

wage_heat_df <- wage_heat_df %>%
  mutate(
    period = factor(period, levels = period_order),
    edu_level = factor(edu_level, levels = edu_order)
  )

تفسير:

تشير البيانات إلى وجود فجوة واضحة في الأجور بين السعوديين حسب المستوى التعليمي، حيث يتصدر حاملو الدكتوراه والماجستير أعلى مستويات الدخل، يليهم حملة البكالوريوس، فيما تبقى الأجور أقل لدى من هم دون ذلك. كما توضح الخريطة أن هذه الفجوة ليست مؤقتة، بل مستمرة عبر السنوات، ما يعكس العائد الاقتصادي المستمر للاستثمار في التعليم.

5.1 معدل المشتغلين من السكان في سن العمل (السعوديون)

emp_rate <- all_data[["معدل المشتغلين من السكان في سن "]]
emp_rate = all_data[["معدل المشتغلين من السكان في سن "]]
emp_rate_yearly <- emp_rate %>%
  filter(nationality_gender == "Saudi_Total") %>%
  group_by(year) %>%
  summarise(value = mean(value, na.rm = TRUE), .groups = "drop")
ggplot(emp_rate_yearly, aes(x = year, y = value)) +
  geom_line(linewidth = 1.4, color = "#f59e0b") +
  geom_point(size = 3, color = "#f59e0b") +
  theme_minimal(base_size = 14) +
  labs(
    title = "معدل المشتغلين من السكان في سن العمل بين السعوديين",
    x = "السنة",
    y = "المعدل (%)"
  )

تفسير:

يعكس هذا المؤشر نسبة السعوديين في سن العمل الذين يشغلون وظائف فعلًا، وهو مؤشر مكمل لمعدل البطالة والمشاركة الاقتصادية.

5.2 بطالة الشباب بين السعوديين

youth_unemp = all_data[["التوزيع النسبي لقوة العمل حسب ا"]]
youth_unemp_yearly <- youth_unemp %>%
  filter(nationality_gender == "Saudi_Total") %>%
  group_by(year, category) %>%
  summarise(value = mean(value, na.rm = TRUE), .groups = "drop")
youth_unemp_yearly %>%
  filter(!category %in% c("الإجمالي", "السكان في سن العمل - 15+")) %>%
  ggplot(aes(x = year, y = value, color = category)) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2.5) +
  theme_minimal(base_size = 14) +
  labs(
    title = "التوزيع النسبي للمتعطلين السعوديين حسب الفئة العمرية",
    x = "السنة",
    y = "النسبة (%)",
    color = "الفئة العمرية"
  )

تفسير:

يساعد هذا الشكل في فهم الفئات العمرية الأكثر تمثيلًا بين المتعطلين السعوديين، ويعطي مؤشراً مهمًا حول بطالة الشباب واتجاهاتها عبر الزمن.

6 الخاتمة

تكشف بيانات سوق العمل السعودي خلال الفترة 2021–2025 عن وجود تحسن نسبي في عدد من المؤشرات الأساسية المرتبطة بالسعوديين، خصوصًا فيما يتعلق بالبطالة والمشاركة الاقتصادية ومعدل المشتغلين.

كما تُظهر البيانات أن هذا التحسن لم يكن متساويًا بين جميع المناطق والفئات، وهو ما يبرز أهمية القراءة التفصيلية لمؤشرات سوق العمل عند تقييم التحولات الاقتصادية والاجتماعية.

7 التوصيات

  1. تعزيز التحليل الإقليمي لمؤشرات البطالة بين السعوديين
  2. التركيز على الفئات العمرية الأكثر تعرضًا للتعطل
  3. ربط مؤشرات سوق العمل ببيانات التعليم والمهارات
  4. استخدام الرسوم التفاعلية لرصد التحولات الزمنية بصورة أوضح
  5. تطوير سلسلة تقارير فرعية حسب كل محور (البطالة، التعليم، الأجور، المناطق)