R是用于統(tǒng)計分析,數(shù)據(jù)科學(xué)和報告的最受歡迎的語言之一。在AAA教育,我們一直在添加R課程(您可以在我們的最新更新中了解更多信息)。要比較R和Python,請在此處查看我們的分析。在大數(shù)據(jù)分析如何使用R語言構(gòu)建一個簡單的成績計算器中,我們將通過構(gòu)建一個簡單的成績計算器來教您R的基礎(chǔ)知識。雖然我們不假定任何R特定知識,但是您應(yīng)該熟悉一般的編程概念。您將學(xué)習(xí)如何:
1)進行計算
2)存儲您的價值
3)使用特定功能回答問題
大數(shù)據(jù)分析如何使用R語言構(gòu)建一個簡單的成績計算器基于我們新發(fā)布的R入門課程的一部分。該課程完全免費,并包含結(jié)業(yè)證書。去這里開始課程。
計算成績
假設(shè)您是一名高中生,并且想要計算平均成績(GPA)。GPA代表您在所有課程中累積的最終分數(shù)的平均值。您要參加七個課程,包括考試,家庭作業(yè)和項目,所有課程的權(quán)重均相等。我們假設(shè)GPA的測量范圍是0-100。在數(shù)學(xué)課上,您92在考試,87家庭作業(yè)和85項目上都獲得了滿分。要計算平均數(shù)學(xué)成績,我們可以編寫以下內(nèi)容:
我們可以手動執(zhí)行諸如計算平均值之類的任務(wù)。但是,如果我們必須計算一千名學(xué)生的平均數(shù),那么手工計算將不會有效利用我們的時間。相反,我們將使用編程來要求計算機執(zhí)行計算。
執(zhí)行計算
我們將從使用R作為基本計算器開始。我們先前編寫了以下內(nèi)容來計算數(shù)學(xué)課的最終成績:
整個代碼行稱為表達式。我們將表達式寫在稱為腳本的文本文件中。腳本是我們提供給計算機的一組指令。用腳本編寫表達式后,解釋器將運行代碼并在新窗口中顯示表達式的結(jié)果。讓print()我們以數(shù)學(xué)分數(shù)來運行語句,作為介于之間的表達式():
運行表達式,解釋器將在新窗口中輸出以下值:
注意:[1]當(dāng)您深入研究向量時,“ ”將很有意義,但在大數(shù)據(jù)分析如何使用R語言構(gòu)建一個簡單的成績計算器的上下文中您無需了解它。在我們顯示的結(jié)果中,計算和print()語句都具有成對的匹配括號。為了更清楚一點,這里是相同的計算:
運行此表達式將產(chǎn)生與將所有內(nèi)容寫在一行上相同的結(jié)果。每個起始括號都需要一個閉合括號。讓我們嘗試刪除右括號:
如果您的代碼有錯誤,解釋器將告訴您有錯誤以及該錯誤是什么。在我們的例子中,解釋器返回:Error in parse(text = x, srcfile = src): :7:0: unexpected end of input。
文本unexpected end of input表示R解釋器(我們的代碼)的輸入缺少右括號)。您可以嘗試使用上面的表達式,看看還會遇到什么其他類型的錯誤。
執(zhí)行多次計算
現(xiàn)在,我們已經(jīng)使用該print()語句看到了結(jié)果,讓我們更深入地研究R解釋器如何運行代碼。它:
1)掃描并查找語法錯誤。
2)從上到下解釋并運行每一行代碼。
3)運行最后一行代碼時退出。
我們已經(jīng)寫了一個表達式來計算您在數(shù)學(xué)課上的最終成績。要了解R代碼的順序解釋方式,我們還要添加一個表達式來計算化學(xué)分數(shù)。在化學(xué),你的得分分別為90,81和92。如果我們在單獨的行上運行兩個計算,會發(fā)生什么?
運行此代碼,R解釋器將顯示:
如果我們編寫兩行代碼,R是否總是顯示兩行?如果將代碼分成多行怎么辦?
R解釋器仍將顯示相同的值:
注意R如何解釋我們的代碼。每個print語句在結(jié)果中對應(yīng)于它自己的一行:
如果我們想計算寫作和美術(shù)的平均分數(shù),可以在隨后的每一行中寫下這些表達式:
1)寫作:84,95,79
2)藝術(shù):95,86,93
運行這些表達式將顯示以下結(jié)果:
使用算術(shù)運算符執(zhí)行計算
+并且/稱為算術(shù)運算符。算術(shù)運算符用于執(zhí)行數(shù)學(xué)運算。在下圖中,您將找到最常用的運算
對于不熟悉冪運算的人,冪運算是一種使用**or ^運算符將數(shù)字本身乘以特定次數(shù)的方法。如果我們想將值4自身乘以3倍,則使用乘法*運算符將如下所示:
雖然使用乘法運算符將4乘以3并不太麻煩,但如果我們想將值4乘以20乘以,則使用乘法運算符并不是最有效的方法。相反,我們可以將計算表示為指數(shù):
運行4**20將返回:
現(xiàn)在我們了解了算術(shù)運算符,讓我們計算最后三個課程的最終成績:歷史,音樂和體育:
1)歷史:77,85,90
2)音樂:92、90、91
3)體育:85、88、95
然后,解釋器將顯示:
按操作順序執(zhí)行計算
現(xiàn)在,我們已經(jīng)了解了如何使用算術(shù)運算符來計算每個班級的平均分數(shù),讓我們回到數(shù)學(xué)的平均計算:
如果我們刪除周圍的括號92 + 87 + 85怎么辦?
這將顯示:
通過刪除周圍的括號92 + 87 + 85,R解釋器進行不同的計算。使用多個運算符時,有一些規(guī)則可以確定執(zhí)行計算的順序。確定計算順序的一種簡單方法是在要首先執(zhí)行的計算周圍加上括號。這對于更復(fù)雜的計算非常有用,例如:
在這種情況下,我們在92 + 87 + 85 + 67 + 92 + 84和周圍加了一個括號77 + 90 + 98。我們要告訴解釋器在執(zhí)行除法之前執(zhí)行加法運算符。R解釋器遵循數(shù)學(xué)運算規(guī)則的順序。記住這一點的簡單方法是PEMDAS:
1)P arentheses
2)Ë xponent
3)中號 ultiplication或d暫無報價
4)甲 ddition或小號 ubtraction
讓我們看一個沒有括號的例子。對于92 + 87 + 85/3,R解釋器將按以下順序計算表達式:
如果您沒有在圓括號中包含括號92 + 87 + 85,則根據(jù)PEMDAS,R解釋器將首先計算除法運算符?,F(xiàn)在,讓我們將括號重新添加到表達式中。對于(92 + 87 + 85)/3。R解釋器將按差異序列計算表達式:
這是每個班級的最終成績:
1)數(shù)學(xué):88
2)化學(xué):87.66667
3)寫作:86
4)藝術(shù):91.33333
5)歷史:84
6)音樂:91
7)體育教育:89.33333
讓我們計算總體平均值,同時牢記PEMDAS。在相同的表達式中計算出總體平均值后,從數(shù)學(xué)分數(shù)中減去該總體平均值:
創(chuàng)建評論
在前面的練習(xí)中,我們使用運算符進行了多次計算。稍后,當(dāng)我們編寫數(shù)百行代碼時,組織代碼是一種良好的編程習(xí)慣。我們可以通過插入注釋來組織代碼。注釋是幫助人們(包括您自己)理解代碼的注釋。R解釋器可以識別注釋,將其視為純文本,并且不會嘗試執(zhí)行它們。我們可以在代碼中添加兩種主要的注釋類型:
1)內(nèi)嵌評論
2)單行注釋
內(nèi)嵌注釋內(nèi)嵌注釋在我們要注釋或向特定語句添加更多細節(jié)時很有用。要在語句末尾添加內(nèi)聯(lián)注釋,請從井號(#)開始,然后添加注釋:
盡管我們不需要在井號(#)后面添加空格,但是這被認為是不錯的樣式,它使我們的注釋更整潔,更易于閱讀。單行注釋單行注釋跨越整個行,在我們要將代碼分為幾部分時很有用。要指定我們希望將文本行作為注釋,請以井號(#)開始:
讓我們在代碼中添加注釋!
給變量賦值
使用R進行簡單的計算非常有用。但是,一種更可靠的方法是存儲這些值以供以后使用。這種存儲值的過程稱為變量賦值。R中的變量就像可以保存值的命名存儲單元。分配變量的過程需要兩個步驟:
1)命名變量。
2)使用將值分配給名稱<-。
命名變量時,必須遵循一些規(guī)則:
1)變量名稱由字母,數(shù)字,點或下劃線組成。
2)我們可以以字母或點開頭的變量。如果是點,那么我們不能在其后加上數(shù)字。
3)我們不能以數(shù)字開頭的變量。
4)不允許使用特殊字符。
有關(guān)更多詳細信息,請參見下表,詳細列出了允許使用哪些變量名稱和不允許使用哪些變量名稱:
讓我們返回數(shù)學(xué)分數(shù)計算:(92 + 87 + 85)/3,該計算的結(jié)果為88。要存儲88在名為的變量中math,讓我們編寫以下表達式:
然后,如果我們嘗試進行print()數(shù)學(xué)運算,像這樣:
這將顯示: [1] 88
變量不僅可以保存我們的計算結(jié)果,還可以分配表達式的值:
然后,如果我們嘗試打印數(shù)學(xué),像這樣:
這將顯示與我們原始計算相同的結(jié)果 [1] 88
我們已經(jīng)將數(shù)學(xué)成績存儲在一個變量中。提醒一下,以下是課程和成績:
1)化學(xué):87.66667
2)寫作:86
3)藝術(shù):91.33333
4)歷史:84
5)音樂:91
6)體育教育:89.33333
讓我們將其他分數(shù)存儲在變量中。
使用變量執(zhí)行計算
現(xiàn)在我們已經(jīng)將每個班級的成績存儲在變量中,我們可以使用這些變量來找到平均成績。讓我們看看我們的數(shù)學(xué)和化學(xué)分數(shù):
在執(zhí)行計算時,變量和值被視為相同。使用math和chemistry變量,88 + 87.66667與相同math + chemistry。使用變量執(zhí)行計算時,PEMDAS規(guī)則仍然適用。如果我們想看看您在數(shù)學(xué)方面比化學(xué)方面的成績要好得多,我們可以使用減法-算術(shù)運算符來找出差異:
顯示:
如果我們想找到數(shù)學(xué)和化學(xué)的平均成績,我們可以使用+,/,()對兩個變量運營商:
顯示:
完成這些計算后,我們還可以將這些表達式的結(jié)果存儲在變量中。如果我們想將數(shù)學(xué)和化學(xué)的平均值存儲在一個名為的變量中average,它將看起來像這樣:
顯示平均值將返回相同的值87.83334。
讓我們使用以下變量來計算平均成績:
1)math <- 88
2)chemistry <- 87.66667
3)writing <- 86
4)art <- 91.33333
5)history <- 84
6)music <- 91
7)physical_education <- 89.33333
然后,讓我們gpa從歷史記錄中減去您的歷史記錄,看看歷史記錄是否低于平均值。將此差異存儲在中history_difference。
創(chuàng)建向量
在前面的示例中,使用變量計算平均成績非常有用。但是,在數(shù)據(jù)科學(xué)中,我們經(jīng)常處理數(shù)千個數(shù)據(jù)點。如果您獲得每個班級每個家庭作業(yè),考試或項目的分數(shù),則我們的數(shù)據(jù)集將會很大?;氐轿覀兊臄?shù)學(xué),化學(xué)示例,讓我們看一下當(dāng)前的變量:
而不是店兩個變量這兩個值,我們需要一個可以存儲在存儲單元的多個值。在R中,我們可以使用向量存儲這些值。向量是可以存儲值序列的存儲容器。然后,我們可以使用變量命名向量。像這樣:
要創(chuàng)建矢量,您將使用c()。在R中,c()稱為函數(shù)。與該print()語句類似,該c()函數(shù)接受多個輸入并將這些值存儲在一個位置。該c()函數(shù)不對值執(zhí)行任何算術(shù)運算,而僅存儲這些值。您可以在此處閱讀有關(guān)該c()功能的更多信息。以下是創(chuàng)建矢量的步驟:
1)確定要存儲在向量中的值,并將這些值放置在c()函數(shù)中。使用逗號分隔這些值,。
2)使用將向量分配給您選擇的名稱<-。
讓我們創(chuàng)建一個包含數(shù)學(xué)和化學(xué)分數(shù)的向量。數(shù)學(xué)分數(shù)是88,化學(xué)分數(shù)是87.66667。
我們還可以使用您的變量名創(chuàng)建向量:
如果要這樣做print(math_chemistry)
,它將如下所示:
另一方面,如果我們嘗試存儲值序列,如下所示:
R解釋器將僅嘗試將88分配給,math_chemistry但在88之后將無法解釋逗號:Error: unexpected ',' in "math_chemistry <- 88,"
讓我們使用以下變量將最終分數(shù)存儲在向量中:
計算平均值
現(xiàn)在我們已經(jīng)將您的成績存儲在矢量中,我們可以計算平均成績了。在上一個練習(xí)中,您使用算術(shù)運算符來計算平均成績:
盡管此解決方案有效,但該解決方案不可擴展?,F(xiàn)在,您已經(jīng)創(chuàng)建了一個向量,我們有了一種更簡單的方法來計算平均成績。要使用向量計算平均成績,請使用mean()函數(shù)。該mean()函數(shù)將獲取一個輸入(向量)并計算該輸入的平均值。然后,解釋器將顯示結(jié)果。讓我們將mean()函數(shù)應(yīng)用于math_chemistry向量:
這將返回:
讓我們將該mean()函數(shù)應(yīng)用于最終成績矢量!
讓我們將該mean()函數(shù)應(yīng)用于最終成績矢量!
對向量執(zhí)行操作
以前,您是使用mean()函數(shù)和向量計算最終成績的。在數(shù)據(jù)科學(xué)中,您總是可以使用數(shù)據(jù)回答多個問題。讓我們更深入地研究final_grades向量,然后再問幾個問題:
1)最高分數(shù)是多少?
2)最低分數(shù)是多少?
3)你選了幾節(jié)課?
要回答這些問題,您將需要一些其他功能:
1)min():找到向量中的最小值
2)max():在向量中找到最大值
3)length():查找向量擁有的值的總數(shù)
4)sum()::獲取向量中所有值的總和(注意:本教程中將不使用。)
您可以應(yīng)用此功能,類似于您應(yīng)用
mean()功能。為了在math_chemistry向量中找到最大分數(shù),我們將max()函數(shù)應(yīng)用于該向量:
顯示: [1] 88
讓我們再回答幾個有關(guān)您成績的問題!
1)您在哪個班上得分最高?使用max()。
2)您在哪一門課程中得分最低?使用min()。
3)你選了幾節(jié)課?使用length()。
下一步
如果您想了解更多信息,大數(shù)據(jù)分析如何使用R語言構(gòu)建一個簡單的成績計算器基于我們的R基礎(chǔ)知識課程,該課程是我們R軌道數(shù)據(jù)分析師的一部分。基于大數(shù)據(jù)分析如何使用R語言構(gòu)建一個簡單的成績計算器中的概念,您將學(xué)習(xí):
1)操作向量的更復(fù)雜方法:
a)索引到向量
b)過濾出向量中的不同值
c)向量的不同行為
2)使用矩陣提出大學(xué)建議
a)創(chuàng)建自己的矩陣
b)切片和重新組織矩陣
c)排序矩陣
3)使用數(shù)據(jù)框分析大學(xué)畢業(yè)生數(shù)據(jù)
a)數(shù)據(jù)框中包含的不同數(shù)據(jù)類型
b)選擇并細分數(shù)據(jù)框中的特定值
c)將條件添加到數(shù)據(jù)框選擇中
4)使用列表存儲各種值
a)索引到列表
b)從列表中添加和減去值
c)合并清單