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)
  • [1] 388

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

那么,第一位同學占總體重的多少呢? 

按比例計算: 

Java代碼 

  • > tizhong/sum(tizhong)
  • [1] 0.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))
  • [1] 17.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))
  • [1] 17.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
  • [1] 20.6

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

Java代碼 

  • > nianling <- c(19,21,20,26,17)
  • > mean(nianling)
  • [1] 20.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))
  • [1] 7

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

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

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

最大值 

Java代碼 

  • > max(tizhong)
  • [/1] 96
  • <PRE class=java name="code">最小值
  • <PRE class=java name="code">> min(tizhong)
  • [1] 65
  • </PRE>
  • <BR>范圍
  • <BR><PRE class=java name="code">> range(tizhong)
  • [1] 65
    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)
  • [1] 144.3
  • </PRE>
  • <BR>標准偏差:
  • <BR><PRE class=java name="code">> sd(tizhong)
  • [1] 12.01249
  • </PRE>
  • <BR>C:四分位數
  • <BR>
  • <BR>四分位數是指把樣本數據按從小到大的順序等分成四份,各等分點上的數即為四分位數。
  • <BR>例如:數據
  • <BR>
  • <BR>3(0%點)  5
    6(25%點)  8
    9(50%點)  11
    12(75%點)  15
    16(100%點)
  • <BR>
  • <BR>25%點的6和75點的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%  75% 100%

  • 3
    6
    9
    12
    16
  • > IQR(sifenshu)
  • [1] 6
  • </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( 23, 34, 56, 78, 89 )
  • >z <- 0
  • >for( i in 1:5 ){
  • >z <- z + x
  • >}   
  • >z <- z/5
  • >z   
  • [1]56
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM