R - 統計分析起家的軟件
從前到現在,學術界最常用的統計軟件除了SPSS就是R,它之所以受歡迎,比其他程式語言,因為其結構簡單,相對容易掌握,對於一個非程式背景出身的統計學家,把心思放在數學理論,新的演算法上,多過放在程式和系統設計,R是一個非常好的選擇,雖然沒有介面,但當你想寫一些自己獨有的分析流程,你會寧願不會要 UI,反而想寫Code去達到自己的目的,這也是筆者為何喜歡Programming,花更多時間在Coding,可讓從你無盡的Routine救起。
Data Type
對於初心者,最好還是先多了解R的資料種類,這樣才會讓你打好根基,在之後任何的分析Routines得心應手。在R的世界,最常用或者筆者會用上的Data Type,有四大種類:Vectors, Matrix, Data Frame, Factors,基本上學會這幾個就夠了。
R中的Vectors可以當成C的Array,Python的List,都是用來儲存每一個Element,而Element可以是一組數字,文字,Boolean,不能是混合的!只需要用c()就可以宣告一個新的Vectors。
Matrix數學上是兩維的Vectors,在R都是一樣,通常會把一組Vector,用matrix()這個function來建立一個Matrix,透過指名Row和Column的數目(nrow, ncol),和從Row開始數起(byrow=TRUE),還是Column數起(byrow=FALSE)。
Data Frame可算是一個偉大的發明,因為這種Data Type十分像Database裡的Table,對於每一個Column都有一個Variable Name,而每一行Row代表每一個Record,若要像SQL做一些Filter,Join也十分的方便,用起來就像處理一個Table。由於這個Data Type實在太有用,連Python也要開發Pandas這個Package來模彷R的Data Frame。只要利用data.frame()這個function去創建新的Data Frame。
而R的List是不同於Python的List,它是可以裝上任何多個Object,裡面有一些可以是Vectors,一些可以是Matrix,另外一些可以是Data Frame,基本上就是一串甚麼都可以有的清單。
Factor是用來儲存一些Nominal的變數,便用factor()來讓R知道它不是一組數字,而是已分好類的群組。
當你了解完後R有什麼的Data Type,你便能輕鬆處理一些數據,之後再應用一些統計分析的Function,便能事半功陪。
至於筆者為何會學習R,因為多一把利器在這社會生存,R在Data Visualization會比較方便,做一些Ad hoc Analysis,可以更快的獲得結果,然後Present結果。再加上自己學校所教的是R,為了碩士順利畢業,學多一樣新的Programming也是無可避免。
安裝:
從官方網站和根據你的作業系統(OS)下載適合的安裝檔:https://cran.r-project.org/
然後你可以打開R Console開始編寫自己的R的Coding了!
然後你可以打開R Console開始編寫自己的R的Coding了!
對於初心者,最好還是先多了解R的資料種類,這樣才會讓你打好根基,在之後任何的分析Routines得心應手。在R的世界,最常用或者筆者會用上的Data Type,有四大種類:Vectors, Matrix, Data Frame, Factors,基本上學會這幾個就夠了。
R中的Vectors可以當成C的Array,Python的List,都是用來儲存每一個Element,而Element可以是一組數字,文字,Boolean,不能是混合的!只需要用c()就可以宣告一個新的Vectors。
a <- c(1, 4, 2, 1) b <- c('I', 'am', 'Horace') c <- c('a', 'b', 3) # 3這個element會自動變成文字 d <- c(TRUE, FALSE) length(a) # 找出a有多少個element cbind(b, b) # 把兩組Vectors用Column合成一個Matrix b b [1,] "I" "I" [2,] "am" "am" [3,] "Horace" "Horace" rbind(b, b) # 把兩組Vectors用Row合成一個Matrix [,1] [,2] [,3] b "I" "am" "Horace" b "I" "am" "Horace"
Matrix數學上是兩維的Vectors,在R都是一樣,通常會把一組Vector,用matrix()這個function來建立一個Matrix,透過指名Row和Column的數目(nrow, ncol),和從Row開始數起(byrow=TRUE),還是Column數起(byrow=FALSE)。
v <- c(1,2,3,4) m <- matrix(v, nrow=2, ncol=2, byrow=TRUE) m [,1] [,2] [1,] 1 2 [2,] 3 4
Data Frame可算是一個偉大的發明,因為這種Data Type十分像Database裡的Table,對於每一個Column都有一個Variable Name,而每一行Row代表每一個Record,若要像SQL做一些Filter,Join也十分的方便,用起來就像處理一個Table。由於這個Data Type實在太有用,連Python也要開發Pandas這個Package來模彷R的Data Frame。只要利用data.frame()這個function去創建新的Data Frame。
id <- c(1,2,3) name <- c('Alan', 'Betty', 'Carols') age <- c(21, 24, 30) df <- data.frame(id, name, age) # 宣告一個Data Frame,由3個Vectors組成 names(df) <- c('ID', 'Name', 'Age') # 為每一個Variable換上自己定義的名字 dim(df) # 找出df的維度
而R的List是不同於Python的List,它是可以裝上任何多個Object,裡面有一些可以是Vectors,一些可以是Matrix,另外一些可以是Data Frame,基本上就是一串甚麼都可以有的清單。
v <- c(1,2,3,4) m <- matrix(v, nrow=2, ncol=2, byrow=TRUE) l <- list(name="Alan", number=3, myVector=v, myMatrix=m)
Factor是用來儲存一些Nominal的變數,便用factor()來讓R知道它不是一組數字,而是已分好類的群組。
success <- c(1, 0, 1, 1, 0, 1, 0) f <- factor(success) levels(l) # 找出有多幾個類別 [1] "0" "1"
當你了解完後R有什麼的Data Type,你便能輕鬆處理一些數據,之後再應用一些統計分析的Function,便能事半功陪。
Comments
Post a Comment