R 自學指引 資料處理命令簡介與操作

常見的向量命令

R 中最基本物件是向量,使用 c() 命令可以建立一個向量,並可指派 (<-) 給變數 x。其中「<-」為 R 特有的指派運算子 (Assignment Operator),在大多數的情況下可以用「=」取代,「<-」與「=」差別藉以下命令執行結果即可說明。命令說明如下(表4)。
> max(x=1:6);x (ENTER)
[1] 6
錯誤: 找不到物件 ‘x’
> max(x<-1:6);x (ENTER)
[1] 6
[1] 1 2 3 4 5 6

命令 說明
max(x) 計算向量 x 的最大值。
min(x) 計算向量 x 的最小值。
range(x) 計算向量 x 的範圍,即 c(min(x) ~ max(x))。
length(x) 計算向量 x 的元素個數。
sum(x) 計算向量 x 的元素總和。
prod(x) 計算向量 x 的元素乘積。
mean(x) 計算向量 x 的平均值。
sort(x) 傳回一個將向量 x 排序之後的新向量。

表4:命令說明。

以下是表 4 命令的應用例子,在 1 到 30 中任選 10 個數。
> x<-sample(1:30,10)字(ENTER)
> x (ENTER)
[1] 26 28 16  1  5 22 27 29  9 14
> max(x) (ENTER)
[1] 29 (ENTER)
> min(x) (ENTER)
[1] 1
> range(x) (ENTER)
[1]  1 29
> length(x) (ENTER)
[1] 10
> sum(x) (ENTER)
[1] 177
> prod(x) (ENTER)
[1] 126408522240
> mean(x) (ENTER)
[1] 17.7
> sort(x) (ENTER)
[1]  1  5  9 14 16 22 26 27 28 29

我們還可使用數值處理命令(表5)及文字或字串處理命令(表6)。

數值處理命令 說明
abs(x) 絕對值
sqrt(x) 平方根
ceiling(x) 大於等於 x 的最小整數如 ceiling(3.475) = 4
floor(x) 小於等於 x 的最大整數如 floor(3.475) = 3
trunc(x) 傳回 x 的整數部分如:trunc(5.99) = 5
round(x, digits=n) 將 x 四捨五入到第 n 位,如 round(3.475, digits=2) = 3.48
signif(x, digits=n) 將 x 捨入到指定數量的 n 位有效數字如 signif(3.475, digits=2) = 3.5;signif(3.475, digits=1) = 3
cos(x)、sin(x)、tan(x) 餘弦、正弦和正切
acos(x) 、asin(x)、atan(x) 反餘弦、反正弦和反正切
cosh(x) 、sinh(x) 、tanh(x) 雙曲餘弦、雙曲正弦和雙曲正切
acosh(x) 、asinh(x) 、atanh(x) 反雙曲餘弦、反雙曲正弦和反雙曲正切
log(x,base=n) 對 x 取以 n 為底的對數
exp(x) 指數函數

表5:數值處理命令說明。

文字或字串命令 說明
substr(x, n1, n2) 在 x 中取出或取代從 n1 到 n2 的子字串。
grep(pattern,x,ignore.case=T) 傳回 x 內指定字串指標,ignore.case=T 設定忽略大小寫,預設為大小寫是不同的。
sub(“原字串,”新字串”,x) 將 x 中第一次找到的原字串,用新字串代替。
gsub(“原字串,”新字串”,x) 將 x 中所有找到的原字串,用新字串代替。
strsplit(x,split) 按 split 字元將 x 分開。
paste(…,sep = ” “,collapse=NULL) 合併 2 個文字向量中的元素使其成為 1 個文字向量。
toupper(x) 將英文小寫字母轉成大寫。
tolower(x) 將英文大寫字母轉成小寫。

表6:文字或字串處理命令。

關於 paste 有需要進一步說明。其中「…」表示一個或多個 R 可以被轉化為字元型的物件。sep 表示分隔符號號,預設為空格。參數 collapse 為可選,若不指定,那麼 paste() 的傳回值是引數之間通過 sep 指定的分隔符號連接後得到的一個字元型向量。如果為其指定了特定的值,那麼引數連接後的字元型向量會再被連接成一個字串,之間通過 collapse 的值分隔。substr (x, n1, n2) 範例如下。
> x <- “abcdef” (ENTER)
> substr(x, 2, 4) (ENTER)
[1] “bcd”
> substr(x, 2, 4) <- “22222” (ENTER)
> x (ENTER)
[1] “a222ef”
以下是 grep(pattern,x,ignore.case=T) 範例。
> month.abb (ENTER)
[1] “Jan” “Feb” “Mar” “Apr” “May” “Jun” “Jul” “Aug” “Sep” “Oct” “Nov” “Dec”
> grep(“a”,month.abb) (ENTER)
[1] 1 3 5
> grep(“a”,month.abb,ignore=T) (ENTER)
[1] 1 3 4 5 8
以下是 sub/gsub (“原字串,”新字串”,x) 範例。
> text <- c(“we are the world”, “we are the children”) (ENTER)
> sub(“w”, “W”, text) (ENTER)
[1] “We are the world”    “We are the children”
> gsub(“w”, “W”, text) (ENTER)
[1] “We are the World”    “We are the children”
strsplit (x, split) 範例:
> strsplit(“abc”, “”) (ENTER)
[[1]]
[1] “a” “b” “c”
以下是 paste (…, sep=””) 的範例。
> paste(LETTERS[1:6],1:6,sep=””) (ENTER)
[1] “A1” “B2” “C3” “D4” “E5” “F6”
> paste(“x”,1:6,sep=”M”) (ENTER)
[1] “xM1” “xM2” “xM3” “xM4” “xM5” “xM6”
> paste(LETTERS[1:6],1:6,sep=””) (ENTER)
[1] “A1” “B2” “C3” “D4” “E5” “F6”
> paste(“x”,1:6,sep=”M”) (ENTER)
[1] “xM1” “xM2” “xM3” “xM4” “xM5” “xM6”
> paste(c(“X”,”Y”),1:8,sep=””) (ENTER)
[1] “X1” “Y2” “X3” “Y4” “X5” “Y6” “X7” “Y8″
以下是 paste ( …, sep = ” “, collapse = NULL) 的範例。
> x <- c(“a”, “b”, “c”, “d”) (ENTER)
> y <- c(“w”, “x”, “y”, “z”) (ENTER)
> paste(x, y, sep=”%%”) (ENTER)
[1] “a%%w” “b%%x” “c%%y” “d%%z”
> > paste(x, y, sep=”%%”, collapse=”,”) (ENTER)
[1] “a%%w,b%%x,c%%y,d%%z”
> paste(x, y, sep=”,”, collapse=”%%”) (ENTER)
[1] “a,w%%b,x%%c,y%%d,z”
toupper(x)/tolower(x) 範例:
> month.abb[1:6] (ENTER)
[1] “Jan” “Feb” “Mar” “Apr” “May” “Jun”
> toupper( month.abb[1:6]) (ENTER)
[1] “JAN” “FEB” “MAR” “APR” “MAY” “JUN”
> tolower( month.abb[1:6]) (ENTER)
[1] “jan” “feb” “mar” “apr” “may” “jun”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。