r数据框计算字符出现次数_R语言系列第二期:①R变量、脚本、作图等模块介绍...
在上一篇文章里,給大家介紹了R語言的下載,界面操作,6個處理對象等等。
在這些內(nèi)容的基礎上,我們在這個部分為大家介紹一些實用知識,包括描述工作區(qū)結構、圖形設備以及它們的參數(shù)等問題,還有初級編程和數(shù)據(jù)輸入輸出。
1 | 會話管理常用操作
① 首先,我們需要提出一個概念:“變量”,其實變量在各種語言或程序都會出現(xiàn),是計算機語言中能儲存計算結果或能表示值的抽象概念。我們先前完成的賦值操作都是把變量作為對象,是數(shù)據(jù)結果的容器,同時也是我們給結果的代號。R中變量的命名是很開放的,只需要遵守以下的原則:
1. 由字母、數(shù)字、圓點(.)、下劃線組成
2. 不能有除圓點(.)、下劃線 以外的符號,如(%)等
3. 不能以數(shù)字開頭
4. 以圓點(.)開頭后不能直接接數(shù)字
5. 與sas不同,不能以下劃線開頭
② 在R中創(chuàng)建的所有變量會存儲在一個公共的工作區(qū)。要了解哪些變量定義在工作區(qū)中,可以使用函數(shù)ls()函數(shù)來展示它們:
> ls()
[1] "acc.count" "age.acc" "brk" "findruns" "findruns1" "findud"
[7] "i" "juul" "mid.age" "n" "preda" "pvec"
[13] "s" "side" "thue" "thuesen" "udcorr" "x"
[19] "xbar" "y"
#Tips:這里是LS()的小寫,不是i,容易出錯,另外ls后的括號不能省略,省略了就變成了變量ls了,而不是函數(shù)。這里展示的是工作區(qū)內(nèi)所存儲的變量,但不包括系統(tǒng)變量——以點開頭的變量,若想要展示它們,可以用> ls(all=T)來展示所有變量,但不建議這樣做。另外因為操作的緣故,結果展示可能會不同。
如果想要刪除某些變量,可以通過rm()來實現(xiàn):
> rm(acc.count,age.acc,brk,findruns,findruns1,findud)
> ls()
[1] "i" "juul" "mid.age" "n" "preda" "pvec" "s"
[8] "side" "thue" "thuesen" "udcorr" "x" "xbar" "y"
#Tips:可以使用> rm(list=ls())來清空整個工作區(qū)。
如果想要保存工作區(qū)到文件,可以使用> save.image()或者File菜單下的保存工作空間,或者在關閉R時出現(xiàn)的提醒里保存,都會保存成一個后綴名為.RData的文件。
#Tips:上面的方式只會保存工作區(qū)的R變量,但是不會保存產(chǎn)生的所有輸出,如果想要保存輸出結果,點擊Files菜單下的“Save to File(保存到文件)”,就會保存所有的結果。
#Tips:當前工作目錄可以通過getwd()獲取,通過setwd()轉換到自己想要設定的地址。比如:> setwd("C:/Users/Administrator/Documents")
③ 如果要處理的問題比較復雜,不希望逐行與R進行交互,或者在輸入多行數(shù)據(jù)的情況下容易出錯,在使用上箭頭調整的時候很麻煩,在這些情況下,可以使用R腳本來處理,即R代碼行的集合。
文件→新建程序腳本
④ 獲取幫助、包、內(nèi)置數(shù)據(jù)
這三個東西都屬于R軟件內(nèi)置的文件,而幫助和包的相關內(nèi)容在引言的文章中有提到過。內(nèi)置數(shù)據(jù)在上一部分我們已經(jīng)提過。
在命令行中通過輸入> help(split)或用前綴形式> ?split都可以獲取split()函數(shù)的幫助。
包可以包含用R語言寫的函數(shù),匯編代碼動態(tài)加載庫以及數(shù)據(jù)集。包的功能會自動執(zhí)行,所以用戶不需要一直加載包。使用library命令將包裝入R:
> library(survival)
加載的包不被視為工作區(qū)的一部分,如果終止了本次的R,重新打開R需要重新加載包。如果需要移除已經(jīng)裝載的包,需要使用:
> detach("package:survival")
⑤ attach 和 detach
有的時候你要重復寫一些很長的命令,在數(shù)據(jù)框中獲取變量的符號就會很多比如說:> plot(women$height,women$weight)
#Tips:women是R自帶的數(shù)據(jù)集,可以直接使用,不需要外部導入。
不過,R可以讓你在數(shù)據(jù)框內(nèi)搜尋目標變量,不使用$符號,比如:
> attach(women)
> plot(height,weight)
attach()命令相當于將women放置到系統(tǒng)的搜索路徑中,可以使用> search()看到搜索路徑:
> search()
[1] ".GlobalEnv" "women" "package:stats"
[4] "package:graphics" "package:grDevices" "package:utils"
[7] "package:datasets" "package:methods" "Autoloads"
[10] "package:base"
也可以用detach()從搜索路徑刪除數(shù)據(jù)框,如果不給參數(shù),默認第二個位置的數(shù)據(jù)框被刪除。
> detach()
> search()
[1] ".GlobalEnv" "package:stats" "package:graphics"
[4] "package:grDevices" "package:utils" "package:datasets"
[7] "package:methods" "Autoloads" "package:base"
⑥ subset和transform
對于選擇數(shù)據(jù)子集以及變換變量創(chuàng)建新的數(shù)據(jù)框:
> women.sub<-subset(women,women$height<65)
> women.sub
height weight
1 58 115
2 59 117
3 60 120
4 61 123
5 62 126
6 63 129
7 64 132
> women.transform=transform(women,
+ bmi=(weight*0.45359)/((height*0.0254)^2))
> head(women.transform)
height weight bmi
1 58 115 24.03465
2 59 117 23.63077
3 60 120 23.43553
4 61 123 23.24029
5 62 126 23.04534
6 63 129 22.85097
#Tips:subset()函數(shù)是選取子集的函數(shù),第一個參數(shù)是原始數(shù)據(jù)集,第二個參數(shù)是條件,類似于上一個部分所講的條件選擇。Transform()函數(shù)可以根據(jù)已有變量來計算新變量,或為原數(shù)據(jù)框添加新的列,改變原變量列的值,還可通過賦值NULL刪除列變量?!?#61;”不是賦值,而是表示名稱,該名稱被賦值給最后一步計算的向量??梢試L試> women$bmi 看一下。
2| 作圖系統(tǒng)環(huán)境
① 布局:R使用的圖形模型中,通常含有的部分包括中央繪圖區(qū)、坐標軸線、坐標軸數(shù)字、x-y軸標簽、邊界、標題、副標題、圖例等等。
標準的x-y圖的軸標簽一般默認采用變量名,當然也可以在plot調用中覆蓋標簽,也可以增加進一步標題或者上方的主標題和底部的副標題。
> plot(height,weight)
> x<-runif(50,0,2)
> y<-runif(50,0,2)
> plot(x,y,main="Main Title",sub="Subtitle",xlab="x-label",ylab="y-label")
還可以在繪圖區(qū)的內(nèi)部,放置點和線,要么在plot()函數(shù)里設定,要么在后面用points和lines添加。同時也可以添加字符或數(shù)字文本。
> text(0.5,0.5,"text at (0.5,0.5)")
> abline(h=0.5,v=0.5)
#Tips:這里調用abline()表示調取橫坐標為0.5的垂直線和縱坐標為0.5的水平線,我們也可以用abline()來繪直線y=ax+b。比如> abline(1,0.5) 表示斜率為1,截距為0.5的直線。
邊界信息由mtext()函數(shù)來填補,如:
> for(side in 1:4) mtext(-1:4,side=side,at=0.8,line=-1:4)
> mtext(paste("side",1:4),side=1:4,line=-1,font=2)
#Tips:for循環(huán)和mtext()里的side參數(shù)來調整填寫的邊,-1 :4是填寫的內(nèi)容,line=參數(shù)是調整文字離線的距離。at=用來調整具體坐標。font=2表示的是粗體字符。
② 逐步構造圖形(引言里涉及這部分內(nèi)容,我們來溫習一下)
圖形的每一部分都可以單獨繪制,單獨繪制圖形通常允許對元素更加精確地控制,所以要達到給定效果的標準,可以先繪制不包括元素的圖形(框架),隨后在逐步添加元素。例如下面的空白圖形構建:
> plot(x,y,type="n",xlab="",ylab="",axes=F)
#Tips:此處type=“n”,表示不繪制點,axes=F刪掉坐標軸和周圍的框,標題標簽設置成空字符串。盡管什么也看不見,但是不代表程序什么也沒做,命令已經(jīng)指定了繪圖區(qū)域和坐標系統(tǒng),只是沒有展示出來而已。
下面我們開始為我們的空白畫板添加元素:
> points(x,y)
> axis(1)
> axis(2,at=seq(0.2,2.0,0.2))
> box()
> title(main="Main title",sub="subtitle",xlab="x-label",ylab="y-label")
③ par的使用
函數(shù)par()可以對圖的細節(jié)進行非常精細的控制,但是對于初學者來說比較難掌握,需要反復練習強化。
Par()設置允許控制線寬和類型、字符大小和字體、顏色、坐標軸的類型、圖形圖表區(qū)域的大小、圖形的裁剪等。
這部分的內(nèi)容等后續(xù)到作具體圖形的地方,我們再來回頭學習。
④ 組合圖形
當希望把幾個元素放到一張圖上的時候,就有一些特殊的要求。如考慮為直方圖疊加一個正態(tài)密度函數(shù)。下面的命令可以做出來我們想要的結果:
> x<-rnorm(100)
> hist(d,freq=F)
> curve(dnorm(x),add=T)
#Tips:hist()里的freq=F保證了直方圖是根據(jù)概率密度而不是實際值畫出來的分布曲線,rnorm()是產(chǎn)生隨機數(shù),dnorm()是密度函數(shù)【關于概率與分布的部分詳見番外二】。add=T表示允許疊加到已有圖形上。
但是也會出現(xiàn)右圖的結果,曲線沒有完整地展現(xiàn)出來,密度函數(shù)的頂部被切去一部分。因為我們是在直方圖的范圍里添加的曲線,直方圖的y軸上限值小于密度函數(shù)的最高點。但是,如果我們換一下順序,先畫出密度函數(shù)再做直方圖也不行,因為有可能直方圖頂端被切除。我們可以先去獲得兩個圖形的最高點,然后把作圖區(qū)域的擴大到容納最高點為止:
> h<-hist(x,plot=F)
> ylim<-range(0,h$density,dnorm(0))
> hist(x,freq=F,ylim=ylim)
> curve(dnorm(x),add=T)
#Tips:調用hist時,如果plot=F,將不會畫出任何圖形,但是會返回一個以比例尺度表示的直方圖高度的結構。此外,結合它以及dnorm(x)的最大值為dnorm(0)的事實,我們就可以計算出來包含直方圖和密度圖的作圖的y軸范圍。range調用中的0保證了條形的底部也在范圍內(nèi)。y值的范圍通過ylim參數(shù)傳遞到hist()函數(shù)中。
這一部分暫時先告一段落,在這部分里,大家了解了R語言環(huán)境中的變量、腳本的使用和一些便利性簡單操作,以及圖形基礎,下個部分我們會接觸到R語言的流程控制、編碼和數(shù)據(jù)讀入、轉換和保存等操作,敬請期待。
總結
以上是生活随笔為你收集整理的r数据框计算字符出现次数_R语言系列第二期:①R变量、脚本、作图等模块介绍...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何把html文件转化为mp3,如何将F
- 下一篇: 有什么软件可以把音频mp3格式转为文字?