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”