Introduction

Let us use R with work with the original Arabic Quranic text. The objective of this tutorial is to get you on the road towards analyzing the Quranic text.

The first obstacle to anyone who wants to analyze Quran -as well as any Arabic text - is the ability to deal with the Arabic text. Here I will try to make this part easier for you.

But, first let us get the Quranic text.

Getting raw Quran

Go to http://tanzil.net/download/ and choose the right file. For this tutorial, I used “Simple Clean” without any pause marks or other options, and chose “Text(with aya numbers)”, and saved it in a folder called “data”. The file includes sura number followed by verse number followed by the actual text of the verse. The fields are separated by a bar “|” and has some copyright notes at the end. I had to manually remove the copyright notes before reading the file in R.

q = read.csv("data/quran-simple-clean.txt", header=F, stringsAsFactor=F, encoding="UTF-8", sep="|")
head(q)
##   V1 V2                     V3
## 1  1  1 بسم الله الرحمن الرحيم
## 2  1  2  الحمد لله رب العالمين
## 3  1  3          الرحمن الرحيم
## 4  1  4         مالك يوم الدين
## 5  1  5 إياك نعبد وإياك نستعين
## 6  1  6  اهدنا الصراط المستقيم
tail(q)
##       V1 V2                                       V3
## 6231 114  1 بسم الله الرحمن الرحيم قل أعوذ برب الناس
## 6232 114  2                                ملك الناس
## 6233 114  3                                إله الناس
## 6234 114  4                     من شر الوسواس الخناس
## 6235 114  5                 الذي يوسوس في صدور الناس
## 6236 114  6                          من الجنة والناس

I hope you have the same output as mine. You might struggle to get R output correct Arabic characters as I did. I used Windows 7 and had to work with changing locale information from control panel.

So, albeit some hiccups: congrats! you have the entire Quran in R!

Tidy up few things

Let us see the structure of our Quran in R

str(q)
## 'data.frame':    6236 obs. of  3 variables:
##  $ V1: int  1 1 1 1 1 1 1 2 2 2 ...
##  $ V2: int  1 2 3 4 5 6 7 1 2 3 ...
##  $ V3: chr  "بسم الله الرحمن الرحيم" "الحمد لله رب العالمين" "الرحمن الرحيم" "مالك يوم الدين" ...

Since our initial file did not have headings, R automatically named the three columns as V1, V2 and V3. We need to change column names:

colnames(q) = c("sura", "aya", "text")

Thats better!

With one shot lets us display the first verse in the first 10 suras

q$text[q$aya==1 & q$sura<=10]
##  [1] "بسم الله الرحمن الرحيم"                                                                                                                                                          
##  [2] "بسم الله الرحمن الرحيم الم"                                                                                                                                                      
##  [3] "بسم الله الرحمن الرحيم الم"                                                                                                                                                      
##  [4] "بسم الله الرحمن الرحيم يا أيها الناس اتقوا ربكم الذي خلقكم من نفس واحدة وخلق منها زوجها وبث منهما رجالا كثيرا ونساء واتقوا الله الذي تساءلون به والأرحام إن الله كان عليكم رقيبا"
##  [5] "بسم الله الرحمن الرحيم يا أيها الذين آمنوا أوفوا بالعقود أحلت لكم بهيمة الأنعام إلا ما يتلى عليكم غير محلي الصيد وأنتم حرم إن الله يحكم ما يريد"                                 
##  [6] "بسم الله الرحمن الرحيم الحمد لله الذي خلق السماوات والأرض وجعل الظلمات والنور ثم الذين كفروا بربهم يعدلون"                                                                       
##  [7] "بسم الله الرحمن الرحيم المص"                                                                                                                                                     
##  [8] "بسم الله الرحمن الرحيم يسألونك عن الأنفال قل الأنفال لله والرسول فاتقوا الله وأصلحوا ذات بينكم وأطيعوا الله ورسوله إن كنتم مؤمنين"                                               
##  [9] "براءة من الله ورسوله إلى الذين عاهدتم من المشركين"                                                                                                                               
## [10] "بسم الله الرحمن الرحيم الر تلك آيات الكتاب الحكيم"

You would notice that Tanzil guys adopted the view that “بسم الله الرحمن الرحيم” is part of the first verse in all suras (expect sura no. 9)..

For me, I wanted to exclude it from all suras except suras nos 1 and 9. How to do that?

q$text = gsub("^بسم الله الرحمن الرحيم ","",q$text)

Now we are ready to go!

Some Handy queries

Dispaly a sura

So, let us display just a sura, say no. 100

q[q$sura==100,]
##      sura aya                            text
## 6147  100   1                  والعاديات ضبحا
## 6148  100   2                  فالموريات قدحا
## 6149  100   3                  فالمغيرات صبحا
## 6150  100   4                   فأثرن به نقعا
## 6151  100   5                   فوسطن به جمعا
## 6152  100   6           إن الإنسان لربه لكنود
## 6153  100   7              وإنه على ذلك لشهيد
## 6154  100   8            وإنه لحب الخير لشديد
## 6155  100   9 أفلا يعلم إذا بعثر ما في القبور
## 6156  100  10               وحصل ما في الصدور
## 6157  100  11         إن ربهم بهم يومئذ لخبير

Search for a word

Here is one way to see how may times and where are the words Muhammad (محمد) is mentioned in the Quran.

q[which(grepl("محمد", q$text)),]
##      sura aya
## 437     3 144
## 3573   33  40
## 4547   47   2
## 4612   48  29
##                                                                                                                                                                                                                                                                                                                text
## 437                                                                                                                                                                           وما محمد إلا رسول قد خلت من قبله الرسل أفإن مات أو قتل انقلبتم على أعقابكم ومن ينقلب على عقبيه فلن يضر الله شيئا وسيجزي الله الشاكرين
## 3573                                                                                                                                                                                                                             ما كان محمد أبا أحد من رجالكم ولكن رسول الله وخاتم النبيين وكان الله بكل شيء عليما
## 4547                                                                                                                                                                                                             والذين آمنوا وعملوا الصالحات وآمنوا بما نزل على محمد وهو الحق من ربهم كفر عنهم سيئاتهم وأصلح بالهم
## 4612 محمد رسول الله والذين معه أشداء على الكفار رحماء بينهم تراهم ركعا سجدا يبتغون فضلا من الله ورضوانا سيماهم في وجوههم من أثر السجود ذلك مثلهم في التوراة ومثلهم في الإنجيل كزرع أخرج شطأه فآزره فاستغلظ فاستوى على سوقه يعجب الزراع ليغيظ بهم الكفار وعد الله الذين آمنوا وعملوا الصالحات منهم مغفرة وأجرا عظيما