آموزش گام به گام استانداردسازی و ادغام دادههای اسکوپوس و وب آو ساینس در R (ویژه مرور سیستماتیک)
مقدمه: چرا جستجو در یک پایگاه داده کافی نیست؟
وقتی یک پژوهشگر فرآیند مرور ادبیات یا پیشینه پژوهش را آغاز میکند، یکی از اولین و حیاتیترین تصمیمات، انتخاب پایگاه دادههای استنادی علمی است. بسیاری از دانشجویان و پژوهشگران به اشتباه تصور میکنند که جستجو در یک پایگاه معتبر مانند اسکوپوس (Scopus) یا وب آو ساینس (Web of Science) برای یافتن تمام مقالات مرتبط کافی است. اما واقعیت علمی چیز دیگری است.
هیچ پایگاه دادهای استنادی علمی، هرچند بزرگ، پوشش صددرصدی از ادبیات علمی ندارد. تحقیقات نشان میدهد که پایگاههای مختلف همپوشانی کاملی ندارند؛ برای مثال، اسکوپوس معمولاً پوشش وسیعتری در مجلات دارد، در حالی که وب آو ساینس تمرکز عمیقتری بر استنادات تاریخی و مجلات با ضریب تاثیر (Impact Factor) بالا دارد (Visser et al., 2021).
تکیه بر تنها یک پایگاه داده استنادی علمی، شما را در معرض خطر جدی سوگیری انتخاب (Selection Bias) و سوگیری استناد (Citation Bias) قرار میدهد. اگر فقط مقالاتی را بررسی کنید که در یک دیتابیس خاص ایندکس شدهاند، ممکن است مطالعات کلیدی و تاثیرگذاری که نتایج متفاوتی داشتهاند را از دست بدهید. این نقص، اعتبار کل پژوهش شما را زیر سوال میبرد.
تجمیع و ادغام دادههای استنادی تنها یک تکنیک لوکس برای مقالات علمسنجی (Bibliometrics) نیست. امروزه در تمامی پژوهشها، بهویژه در انواع مطالعات مروری (مانند مرور سیستماتیک، مرور حوزهای یا Scoping Review و فراتحلیلها)، استفاده همزمان از چند پایگاه و ادغام آنها یک استاندارد الزامی و غیرقابل چشمپوشی است (Bramer et al., 2016). این کار تضمین میکند که مرور شما جامع، بیطرفانه و قابل اتکا است.
مشکل اصلی زمانی آغاز میشود که فایلهای خروجی اسکوپوس و وب آو ساینس را دانلود میکنید. ساختار ستونها، نامگذاری متغیرها و فرمت دادهها در این دو پایگاه کاملاً متفاوت است. ادغام دستی این دادهها در اکسل، علاوه بر زمانبر بودن، با خطای انسانی بالایی همراه است و مقالات تکراری (Duplicates) به راحتی پنهان میمانند.
به همین دلیل، در این مقاله آموزشی، ما روشهای سنتی را کنار گذاشته و روی استانداردسازی و ادغام دادهها با استفاده از زبان برنامهنویسی RStudio متمرکز میشویم. RStudio نه تنها این فرآیند را خودکار و دقیق میکند، بلکه امکان تکرارپذیری پژوهش (Reproducibility) شما را نیز به حداکثر میرساند.
۱. گام اول: پیشنیازها و استخراج اصولی دادهها
قبل از اینکه بخواهیم کدی بنویسیم یا دادهای را ادغام کنیم، به مواد اولیه استاندارد نیاز داریم. استخراج دادهها (Export) از اسکوپوس و وب آو ساینس قوانینی دارد که اگر رعایت نشوند، فرآیند ادغام در R با خطاهای متعدد روبرو خواهد شد. شما باید مطمئن شوید که تمامی فیلدهای استنادی (مانند نام نویسندگان، سال انتشار، چکیده، کلمات کلیدی و مراجع) را به درستی و با فرمت مناسب (معمولاً .csv، .txt یا .bib) دانلود کردهاید.
آموزش ویدئویی: از آنجایی که ترفندهای جستجوی پیشرفته و نحوه گرفتن خروجی استاندارد از این دو پایگاه نیازمند دقت بالایی است، ما یک آموزش جامع و یکساعته در یوتیوب آماده کردهایم. اگر هنوز دادههای خود را استخراج نکردهاید یا با اصول جستجوی ترکیبی آشنا نیستید، پیشنهاد میکنیم ابتدا آموزش صفر تا صد جستجو و استخراج داده از اسکوپوس و وب آو ساینس را مشاهده کنید و سپس برای ادغام آنها ادامه این مقاله را بخوانید.
۲. گام دوم: چرا ادغام اسکوپوس و وب آو ساینس چالشبرانگیز است؟
اگر فایلهای خروجی این دو پایگاه را در نرمافزاری مثل اکسل باز کنید، متوجه میشوید که کپی و پیست کردن آنها زیر یکدیگر غیرممکن است. دلیل این امر، تفاوت ساختاری در نحوه ذخیرهسازی دادههاست:
- تفاوت در نامگذاری ستونها (Column Headers): وب آو ساینس از تگهای اختصاری استفاده میکند (مثلاً ستون نویسندگان را AU و نام مجله را SO مینامد)، در حالی که اسکوپوس از نامهای کامل (مانند Authors و Source title) استفاده میکند.
- تفاوت در جداکنندهها (Separators): برای جدا کردن نام نویسندگان یا کلمات کلیدی در یک سلول، یک پایگاه ممکن است از نقطه-ویرگول (;) و دیگری از ویرگول (,) استفاده کند.
- تفاوت در فرمت نام نویسندگان: نحوه نگارش نام و نام خانوادگی (مثلاً آوردن نام کامل یا فقط حرف اول نام) در این دو پایگاه همواره یکسان نیست، که این موضوع شناسایی مقالات تکراری را بسیار سخت میکند.
۳. گام سوم: آمادهسازی محیط RStudio و فراخوانی کتابخانهها
برای انجام این کار به صورت ساختاریافته، ما از محیط RStudio استفاده میکنیم که رابط کاربری بسیار مناسبی برای مدیریت اسکریپتها و دادهها دارد.
یک نکته مهم (آموزش ویدئویی کتابسنجی): اگر هدف شما از ادغام دادهها صرفاً انجام تحلیلهای کتابسنجی (Bibliometrics) است، پیشتر یک آموزش ویدئویی ۴۵ دقیقهای در یوتیوب برای دانشجویان دورههای کتابسنجی آماده کردهایم که کل این فرآیند را از طریق پکیج bibliometrix آموزش میدهد (مشاهده آموزش کتابسنجی در یوتیوب). اما از آنجایی که هدف ما در این مقاله فراتر از کتابسنجی است و میخواهیم دادهها را برای انواع مطالعات پژوهشی و مروری (Systematic Review) آماده کنیم، از روش منعطفتر و دقیقتری استفاده خواهیم کرد. در این روش، ما وابستگی به پکیجهای خاص را کم کرده و خودمان کنترل ۱۱ ستون حیاتی را به دست میگیریم.
برای شروع، نرمافزار RStudio را باز کرده و پکیجهای زیر را نصب و فراخوانی کنید:
# install.packages(“dplyr”)
# install.packages(“readr”)
# فراخوانی کتابخانهها
library(dplyr)
library(readr)
۴. گام چهارم: استخراج ۱۱ ستون اصلی و یکسانسازی نامگذاریها
برای جلوگیری از سوگیری و از دست رفتن اطلاعات در فرآیند بررسی مرور سیستماتیک، ما به تمام دهها ستون خروجی پایگاهها نیاز نداریم. تمرکز ما روی ۱۱ ستون کلیدی و مشترک است:
- ۱. عنوان مقاله (Title)
- ۲. نویسندگان (Authors)
- ۳. سال انتشار (Year)
- ۴. نام مجله/منبع (Journal)
- ۵. شناسه دیجیتال (DOI)
- ۶. چکیده (Abstract)
- ۷. کلمات کلیدی (Keywords)
- ۸. نوع سند (Document Type)
- ۹. دوره (Volume)
- ۱۰. شماره (Issue)
- ۱۱. صفحات (Pages)
در کدهای زیر، ابتدا فایلهای خروجی اسکوپوس و وب آو ساینس را وارد محیط RStudio میکنیم. سپس با استفاده از تابع select، فقط ستونهای مورد نیاز را جدا کرده و نام آنها را به یک استاندارد واحد تغییر میدهیم.
wos_raw <- read_csv("wos_data.csv") scopus_raw <- read_csv("scopus_data.csv") # ۲. استانداردسازی دادههای وب آو ساینس (WoS) wos_clean <- wos_raw %>%
select(
Title = TI,
Authors = AU,
Year = PY,
Journal = SO,
DOI = DI,
Abstract = AB,
Keywords = DE,
DocType = DT,
Volume = VL,
Issue = IS,
Pages = BP
) %>%
mutate(Database = “WoS”) # اضافه کردن برچسب پایگاه
# ۳. استانداردسازی دادههای اسکوپوس (Scopus)
scopus_clean <- scopus_raw %>%
select(
Title = Title,
Authors = Authors,
Year = Year,
Journal = `Source title`,
DOI = DOI,
Abstract = Abstract,
Keywords = `Author Keywords`,
DocType = `Document Type`,
Volume = Volume,
Issue = Issue,
Pages = `Page start`
) %>%
mutate(Database = “Scopus”) # اضافه کردن برچسب پایگاه
با اجرای این کد، ما اکنون دو دیتافریم (wos_clean و scopus_clean) داریم که دقیقاً ساختار و نام ستونهای یکسانی دارند و آماده ادغام هستند.
در فرآیند آمادهسازی دادهها برای مقالات ساختاریافته و مرور سیستماتیک، کوچکترین خطا در ادغام یا حذف تکراریها (Deduplication) میتواند به معنای از دست رفتن مقالات حیاتی و ایجاد سوگیری (Bias) در کل پژوهش باشد. برای ارائه یک راهحل کاملاً بدون خطا، ما باید دو چالش اصلی را مهار کنیم:
- ۱. تفاوت در حروف بزرگ و کوچک یا فاصلههای اضافی در DOI و عناوین.
- ۲. مقالاتی که شناسه DOI ندارند.
در ادامه، گامهای نهایی را با کدهای R بسیار ایمن ارائه میکنیم.
۵. گام پنجم: ادغام دادهها و پیشپردازش برای شناسایی تکراریها
در این مرحله، ابتدا دو دیتافریم را ترکیب کرده و سپس ستونهای کمکی و استاندارد شدهای برای «تطبیق دقیق» ایجاد میکنیم. ما از پکیج stringr برای پاکسازی متنها استفاده میکنیم.
# install.packages(“stringr”)
library(stringr)
# ۱. ترکیب دو مجموعه داده
combined_data <- bind_rows(wos_clean, scopus_clean)
# ۲. ایجاد ستونهای تطبیق (Match Columns) برای جلوگیری از خطای انسانی و سیستمی
cleaned_data <- combined_data %>%
mutate(
# یکدست کردن DOI: حروف کوچک و حذف فواصل ابتدا و انتها
DOI_Match = tolower(str_trim(DOI)),
# یکدست کردن عنوان: حروف کوچک، حذف کامل علائم نگارشی و فواصل اضافی
Title_Match = str_squish(str_replace_all(tolower(Title), “[[:punct:]]”, “”))
)
۶. گام ششم: الگوریتم پیشرفته حذف تکراریها (بدون حذف مقالات فاقد DOI)
اکنون از یک منطق دو مرحلهای ایمن استفاده میکنیم. ابتدا تکراریها را بر اساس DOI حذف میکنیم (با شرط اینکه مقالات بدون DOI دستنخورده باقی بمانند). سپس مقالات باقیمانده را بر اساس عنوان یکدستشده بررسی میکنیم.
# (اختیاری) مرتبسازی دادهها تا رکوردهایی که چکیده دارند در اولویت حفظ شدن باشند
arrange(desc(Abstract)) %>%
# مرحله اول: حذف تکراریها بر اساس DOI
# منطق: اگر DOI خالی است آن را نگه دار، در غیر این صورت فقط اولین مورد غیرتکراری را نگه دار
filter(is.na(DOI_Match) | !duplicated(DOI_Match)) %>%
# مرحله دوم: حذف تکراریها بر اساس عنوان (برای مقالاتی که DOI نداشتند)
filter(is.na(Title_Match) | !duplicated(Title_Match)) %>%
# پاکسازی نهایی: حذف ستونهای کمکی
select(-DOI_Match, -Title_Match)
# بررسی نتیجه نهایی
cat(“تعداد مقالات قبل از حذف تکراریها:”, nrow(combined_data), “\n”)
cat(“تعداد مقالات بعد از حذف تکراریها:”, nrow(final_data), “\n”)
# ذخیره خروجی نهایی در یک فایل اکسل یا CSV برای شروع مرور سیستماتیک
write_csv(final_data, “Final_Merged_Dataset.csv”)
نتیجهگیری: تسلط بر دادهها، تضمین اعتبار پژوهش
ادغام دادههای استنادی از پایگاههای معتبری مانند اسکوپوس و وب آو ساینس، نخستین و حساسترین گام در هر مطالعه مرور سیستماتیک (Systematic Review)، فراتحلیل (Meta-Analysis) یا پژوهش علمسنجی است. اتکای صرف به نرمافزارهای خودکار یا توابع «جعبه سیاه» (Black-box) میتواند منجر به خطاهای پنهان، از جمله حذف اشتباه مقالات فاقد DOI یا از دست رفتن رکوردهای ارزشمند به دلیل تفاوتهای جزئی در نگارش عناوین شود.
در این مقاله، ما یک رویکرد کاملاً شفاف و مبتنی بر کدنویسی در محیط RStudio را پیادهسازی کردیم. با استخراج و استانداردسازی دستی ۱۱ ستون حیاتی با استفاده از پکیج dplyr و سپس اعمال یک الگوریتم دو مرحلهای بدون خطا برای حذف تکراریها (Deduplication)، شما اکنون کنترل کاملی بر روی دادههای خود دارید. این روش نه تنها شفافیت و تکرارپذیری (Reproducibility) پژوهش شما را تضمین میکند، بلکه خطر سوگیری انتخاب (Selection Bias) را که میتواند اعتبار کل تحقیق را زیر سوال ببرد، به حداقل میرساند.
با در دست داشتن یک مجموعه دادهی تمیز، یکپارچه و بدون نقص، اکنون با اطمینان کامل میتوانید وارد مراحل بعدی پژوهش خود یعنی غربالگری عناوین و چکیدهها (Screening) در قالب یک پروتکل استاندارد مانند پریزما (PRISMA) شوید.
حقوق نشر و کپیرایت
تمامی حقوق مادی و معنوی این مقاله و کدهای ارائه شده در آن متعلق به نویسندگان (دکتر محسن مرادی و دکتر آیدا میرالماسی) میباشد. هرگونه کپیبرداری، بازنشر یا استفاده از این محتوا بدون ذکر نام نویسندگان و ارجاع دقیق (لینک مستقیم) به این صفحه، غیرمجاز بوده و پیگرد قانونی دارد.
آکادمی تحلیل آماری ایران مدرسه پژوهش کمی و کیفی