R語言入門 一些基本的操作

1 R的下載、安轉 

R有很多的版本,支持目前主流的操作系統MAC、Linux和WINDOWS系列。因爲我個人是在WINDOWS下用R的,所以在這裏將只介紹WINDOWS下R的下載&安裝。 

下載R: 

你可以從世界各地很多網站上下載到R,官方的中國下載點是: 
http://www.lmbe.seu.edu.cn/CRAN/bin/windows/base/ 

在我寫這篇文章的時候,最新的版本是R-2.2.1版。 
在網絡上有一篇被翻譯過來的R入門教材,可以在這裏找到 :R 導論(入門) 

安裝R: 

1,雙擊R-2.2.1-win32.exe文件,進入安裝畫面。 
2,在Welcome to the R for Windows Setup Wizard的畫面中,單擊NEXT。 
3,在License Agreement的畫面中,選擇[I accept the agreement],然後單擊NEXT。 
4,在Select Destination Location的畫面中,可以自行設定安裝目錄,默認爲:[C:\Program Files\R\R-2.2.1],單擊NEXT。 
5,在接下來的過程中一律選則NEXT安裝即可。 





2 簡單的數學計算、數學函數以及如何編輯R程序 

1,用R進行簡單的計算: 

我們可以用R進行以下各類運算。 

加法      + 
減法      - 
乘法      * 
除法      / 
冪運算   ^ 
整數商   %/% 
餘數      %% 
例如: 
輸入:   (1 + 2 - 3 * 4) / 5^6 
結果:   [1] -0.000576 

2,R中還有很多的數學函數可以使用,比如說開方函數、對數函數等等。 

例如: 
輸入:   sqrt(2) 
結果:[1] 1.414213 

你還可以使用多個函數進行計算。例如: 
輸入:   sqrt(100) + round(100) / log10(100) 
結果:[1] 60 下面介紹的是R中可以使用的數學函數。 

sqrt : 開平方函數 
abs  : 絕對值函數 
exp  : 2.71828… 
expm1  : 當x的絕對值比1小很多的時候,它將能更加正確的計算exp(x)-1 
log  : 對數函數 
log10  : 對數(底爲10)函數 
log2  : 對數(底爲2)函數 
sin  : 正弦函數 
cos  : 餘弦函數 
tan  :  正切函數 
asin  :  反正弦函數 
acos  :  反餘弦函數 
atan  :  反正切函數 
sinh  :  超越正弦函數 
cosh  :  超越餘弦函數 
tanh  :  超越正切函數 
asinh  :  反超越正弦函數 
acosh  :  反超越餘弦函數 
atanh  :  反超越正切函數 
logb  :  和log函數一樣 
log1px  :  當x的絕對值比1小很多的時候,它將能更加正確的計算log(1+x) 
gamma  :  Γ函數(伽瑪函數) 
lgamma  :  等同於log(gamma(x)) 
ceiling  :  返回大於或等於所給數字表達式的最小整數 
floor  :  返回小於或等於所 給數字表達式的最大整數 
trunc  :  截取整數部分 
round  :  四捨五入 
signif(x,a)  :  數據截取函數 x:有效位 a:到a位爲止 
3,R程序的輸入/編輯 

你可以直接在R的環境裏輸入R命令執行計算,也可以用任何一款文本編輯器進行編程。R程序的默認文件名後綴是[ .R ]。 
4,環境設置函數options() 

用options()命令可以設置一些環境變量。 

比如說: 

options(digits=10) 
這個命令,可以把R的整數表示能力設爲10位。 

options(warn=-1) 
這個命令,可以忽視任何警告。(warn=1時,爲不放過任何警告) 
…… 

使用help(options)可以查看詳細的參數信息。 


RWEKA: 

WEKA是一個JAVA寫的數據挖掘的工具,RWEKA則是在R中調用WEKA的一個界面。 

擴展包說明&下載地址(英文):http://cran.r-project.org/src/contrib/Descriptions/RWeka.html 


3、R的數據類型 

R中包含以下的基本數據類型。 

空值(NULL) 
意義  :該對象裏什麼都沒有(甚至連0也沒有) 

欠損值、不定值(NA),非數(NaN),無限大(Inf) 
意義  :NA:表示數據缺損;NaN:表示用數字無法表示;Inf:無限大 

複數(complex) 
意義  :複數 

字符串(character) 
意義  :不是單一的字符,而是用雙/單引號括起來的字符 

邏輯值(logical) 
意義  :T表示真,F表示假 


4_關於R的一些基本知識 


首先看一下這一次要講的內容。 

在用R進行數據分析和計算的時候,將會用到很多變量、函數、數組等等。而對象則是對所有這些變量、函數、數組等的總稱。比如說,下面這個式子:x <- 2通常我們會說,x是一個變量,我們通過賦值運算把它的值設爲2。但是在R裏,不論我們是給一個變量賦值也好,還是對一個數組進行初始化也好,我們統統把它稱爲[對象]。  

什麼是對象(Object) 
如何改變工作目錄 
關於擴展包(庫函數) 
R的數據類型 
環境設置函數options() 
接下來,我們一個一個的簡單介紹。 

1,什麼是對象(Object) 

在用R進行數據分析和計算的時候,將會用到很多變量、函數、數組等等。而對象則是對所有這些變量、函數、數組等的總稱。 
比如說,下面這個式子: 
x <- 2 



下面的對象是R的預設對象。我們在命名自己的對象時,是不能與下面這些對象重名的。 

break 
else 
for 
function 
if 
TRUE 
in 
next 
repeat 
return 
while 
FALSE 

另外: 
使用objects()函數,還可以查看目前存在的對象名。 
使用rm()函數,可以消除自己所定義過的對象。( 例如: rm(killme) ) 
使用rm(list=ls(all=TRUE))命令,可以消除自己所定義過的所有的對象。 
命名對象時,要注意大小寫。(例如:x和X是兩個不同的對象) 

2、如何改變工作目錄 

你可以用getwd()命令來查看當前目錄,也可以用類似setwd(”c:/usr”)的命令來更改當前的目錄。 

你還可以用dir()命令來查看當前目錄裏的文件。(好像回到了dos時代…呵呵) 

3、關於擴展包(庫函數) 

R有很好的擴展性能,默認下R自帶了以下的擴展包。 

base:R的基本擴展包 
boot:R的啓動函數庫 
class:Classification的函數庫 
cluster:進行聚類分析計算的函數庫 
foreign:讀取其它的統計軟件(如:SAS…)等生成的文件的函數庫 
grid:grid圖像函數庫 
KernSmooth:進行核函數密度估計運算的函數庫 
lattice:lattice圖像函數庫 
MASS:在『Modern Applied Statistics with S』中出現的數據與函數庫 
methods:定義了在R中用於對象的各種方法、類、程序以及工具。 
mgcv:GCV和一般加法模型GAM(generalized additive model)的函數庫 
nlme:線性混合效果模型和非線性混合效果模型的函數庫 
nnet: 
rpart:使用了再歸算法的分類和迴歸樹的函數庫 
spatial: 
splines:splines迴歸的函數庫 
stats:R的統計函數庫 
stats4:S4類的統計函數庫 
survival: 
tcltk:Tcl/Tk的接口函數庫 
tools:用於擴展包開發和管理的函數庫 
utils: 

另外: 
使用library(help=”擴展包名”)命令可以查看該擴展包的詳細信息 
使用library(擴展包名)命令可以使用該擴展包 
使用search()命令可以查看現在已經讀取的擴展包 
使用detach(”package:擴展包名”)命令可以卸載某個擴展包 
使用data()命令可以查看當前可使用的數據對象 
使用data(package = “擴展包名”)命令可以查看在該擴展包中的數據對象 

擴展包的安裝: 
使用下面的命令,可以聯網安裝擴展包。 
options(CRAN=”http://cran.r-project.org”) 
install.packages(”擴展包名”) 

如果你已經下載了擴展包的ZIP壓縮文件,你可以用下面的命令指定路徑安裝擴展包。 
install.packages(”路徑名/文件名.zip”, contriburl = NULL) 
例如:install.packages(”c:/adapt_1.0-4.zip”, contriburl = NULL) 

當然,你也可以通過菜單操作下載和安裝擴展包,請自己研究。 


5_用R進行基本的統計計算 


今天簡單的講一下如何用R進行基本的統計計算。 

定義: 
數據有很多種分類方法,在這裏,爲了方便理解,暫時把年齡、身高、體重等用數字表示的數據叫做數量型數據;相對的,把血型、性別、職稱等用文字敘述的數據叫做質量型數據。 

在這裏所說的基本的統計計算,是指對各類數量型數據進行求和、平均、求最大值最小值等等的計算。 

●和與百分比 

A:和 

在對數量型數據進行分析計算時,求和是經常會使用到的。 

比如說,有五位同學,他們的身高分別是: 
1.75米 、 1.82米 、 1.78米 、 1.93米 、 1.77米 
求他們的身高的總和。 

和 = 1.75+1.82+1.78+1.93+1.77 = 9.05米 

用R進行求和計算時,你可以按照下面的方式進行計算 

> 1.75+1.82+1.78+1.93+1.77 
[1] 9.05 


也可以利用R本身的sum()函數,這樣的話,會更加便捷。 

> shengao <- c(1.75,1.82,1.78,1.93,1.77) 
> sum(shengao) 
[1] 9.05 


B:百分比 

還是剛纔那5位同學,他們的體重分別是: 
69公斤 , 80公斤 , 78公斤 , 96公斤 , 65公斤 
他們的總體重爲: 

Java代碼 

  • > tizhong <- c(69,80,78,96,65)
  • > sum(tizhong)
  • [1388

> tizhong <- c(69,80,78,96,65)> sum(tizhong)[1] 388
388公斤。 

那麼,第一位同學佔總體重的多少呢? 

按比例計算: 

Java代碼 

  • > tizhong/sum(tizhong)
  • [10.1778351
    0.2061856
    0.2010309
    0.2474227
    0.1675258

> tizhong/sum(tizhong)[1] 0.1778351 0.2061856 0.2010309 0.2474227 0.1675258

按百分比計算: 

Java代碼 

  • 100*(tizhong/sum(tizhong))
  • [117.78351
    20.61856
    20.10309
    24.74227
    16.75258

> 100*(tizhong/sum(tizhong))[1] 17.78351 20.61856 20.10309 24.74227 16.75258
使用擴展包sca中的percent函數,可以用帶%符號的表示方式顯示結果。 

Java代碼 

  • > library(sca)
  • > percent(tizhong/sum(tizhong))
  • [1] “18 %” “21 %” “20 %” “25 %” “17 %”

> library(sca)> percent(tizhong/sum(tizhong))[1] “18 %” “21 %” “20 %” “25 %” “17 %”
還可以用參數d來指定小數點後的表示位數。在不指定的情況下,小數點後的數字不表示。 

Java代碼 

  • > percent(tizhong/sum(tizhong),d=1)
  • [1] “17.8 %” “20.6 %” “20.1 %” “24.7 %” “16.8 %”

> percent(tizhong/sum(tizhong),d=1)[1] “17.8 %” “20.6 %” “20.1 %” “24.7 %” “16.8 %”

如果不想結果被雙引號包圍,可以用noquote命令 

Java代碼 

  • > noquote(percent(tizhong/sum(tizhong),d=1))
  • [117.8 % 20.6 % 20.1 % 24.7 % 16.8 %

> noquote(percent(tizhong/sum(tizhong),d=1))[1] 17.8 % 20.6 % 20.1 % 24.7 % 16.8 %

●表示中心的統計量 
表示數據中心位置的統計量有很多種,最基本的有:平均值、最頻值。 

A:平均值 

上面那五位同學的年齡分別爲: 
19歲 、 21歲 、 20歲 、 26歲 、 17歲 
在求這五位同學的年齡的平均值時,可以用下面這種方法: 

Java代碼 

  • > (19+21+20+26+17)/5
  • [120.6

> (19+21+20+26+17)/5[1] 20.6
也可以用R自帶的mean()函數: 

Java代碼 

  • > nianling <- c(19,21,20,26,17)
  • > mean(nianling)
  • [120.6

> nianling <- c(19,21,20,26,17)> mean(nianling)[1] 20.6
B:最頻值 

在數據中最頻繁出現的數值叫做最頻值。 

我們先用其他的函數來間接的求最頻值。 
例如:我們在求下面這組數據的最頻值時,可以使用table函數。 

Java代碼 

  • 1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4
  • > table(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))

  • 1
    3
    4
    5
    7
    8
    9
    23

  • 1
    2
    1
    1
    3
    1
    1
    1

1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4> table(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4)) 1  3  4  5  7  8  9 23 1  2  1  1  3  1  1  1
從返回的結果中我們可以清楚地看到,在數據中 “7” 出現了3次,因此 “7” 爲該組數據的最頻值。 

接着,我們直接用函數median()來求最頻值。 

Java代碼 

  • > median(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
  • [17

> median(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))[1] 7
●表示分散的統計量 
表示數據中心的統計量雖然很重要,但是表示數據四周的分散信息的統計量也十分的重要。 

A:最大值、最小值和範圍 

我們用tizhong數據,分別計算五位同學體重的最大值、最小值和體重的分佈範圍。 

最大值 

Java代碼 

  • > max(tizhong)
  • [/196
  • <PRE class=java name="code">最小值
  • <PRE class=java name="code">> min(tizhong)
  • [165
  • </PRE>
  • <BR>範圍
  • <BR><PRE class=java name="code">> range(tizhong)
  • [165
    96
  • </PRE>
  • <BR>
  • <BR>B:方差和標準偏差(variance AND standard deviation)
  • <BR>
  • <BR>在R中,有很方便的求方差和標準偏差的函數var()和sd()。
  • <BR>
  • <BR>例如在求tizhong數據的方差和標準偏差時,可以如下計算。
  • <BR>方差:
  • <BR><PRE class=java name="code">> var(tizhong)
  • [1144.3
  • </PRE>
  • <BR>標準偏差:
  • <BR><PRE class=java name="code">> sd(tizhong)
  • [112.01249
  • </PRE>
  • <BR>C:四分位數
  • <BR>
  • <BR>四分位數是指把樣本數據按從小到大的順序等分成四份,各等分點上的數即爲四分位數。
  • <BR>例如:數據
  • <BR>
  • <BR>30%點)  5
    625%點)  8
    950%點)  11
    1275%點)  15
    16100%點)
  • <BR>
  • <BR>25%點的675點的12分別稱爲下四分位數和上四分位數。
  • <BR>
  • <BR>上四分位數與下四分數之差叫做四分位間距。
  • <BR>
  • <BR>在R中我們可以用quantile()函數和IQR()函數來求四分位數和四分位間距。
  • <BR><PRE class=java name="code">> sifenshu <- c(3,5,6,8,9,11,12,15,16)
  • > quantile(sifenshu)

  • 0%  25%  50%  75100%

  • 3
    6
    9
    12
    16
  • > IQR(sifenshu)
  • [16
  • </PRE>
  • <BR>
  • <BR>今天簡單介紹了一下如何用R對一些基本的統計量進行計算,如果有其它的要求的,歡迎提出來,我會進一步介紹的。今天就先到這裏了,呵呵。
  • <BR>
  • <BR>
  • <BR>6_R的函數
  • <BR>
  • <BR>R中有很多的標準自帶的函數,也有很多的由擴展包支持的函數。今天我們主要看一看R中標準自帶的函數。
  • <BR>
  • <BR>首先簡單定義一下什麼是函數:
  • <BR>
  • <BR>在R中,所謂函數實際上就是一系列程序的組合。
  • <BR>
  • <BR>爲了能夠更深刻的理解這句話,我將在下面這個例子中先一步一步的計算幾個數的平均值;再講如何把這些可以重複利用的運算步驟改寫成爲自己服務的函數;最後,我們再看一下R中已經爲我們準備好了的求平均值的函數的用法:
  • <BR>
  • <BR><PRE class=java name="code">1,一段程序
  • 我們用R計算下面這5個數的和

  • 23
    34
    56
    78
    89
  • 在R中,我們剛開始可能會這樣寫:
  • >x <- c( 2334567889 )
  • >z <- 0
  • >for( i in 1:5 ){
  • >z <- z + x
  • >}   
  • >z <- z/5
  • >z   
  • [1]56
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章