一健小事

一蚊有難,百方支援。

R and Ronald (1):製造matrix

Snap 2015-01-04 at 11.34.04

#輸入字詞

#一般打character strings,就只要在引號內打字句:

“R and Ronald."
[1] “R and Ronald."

#字句可以由單字組合:
paste(“R", “and", “Ronald", “.", sep=" “, collapse = NULL)
[1] “R and Ronald."

#如果在每個字之間加分隔符號,例如「/」,那麼可以在sep設置:
paste(“R", “and", “Ronald", “.", sep="/", collapse = NULL)
[1] “R/and/Ronald/."

#如果合併所有單字成為一個character vector,而中間不含分隔,可以直接用paste0:
paste0(“R", “and", “Ronald", “.")
[1] “RandRonald."

#如果不要顯示引號,可以用cat:
cat(“R", “and", “Ronald", “.")
R and Ronald.

========
#處理vectors

#首先隨機製造兩組數據,每組為五個不多於20的整數。

x <- sample(20, 5)
y <- sample(20, 5)
x
[1] 20 10 16 17 13
y
[1] 4 6 8 11 3

#假設x為五位學生的考試分數,y為他們的論文分數。
exam <- x
essay <- y

#展示哪個論文分數是合格 (10分),可以用logical vector:
essay >= 10
[1] FALSE FALSE FALSE TRUE FALSE
#結果得一名合格
#要展示那位學生的分數:
essay[essay >= 10]
[1] 11

#究竟如何顯示不合格的論文分數?訂立is_below_avg這個vector:
is_below_avg <- essay < 10
#TRUE表示不合格,FALSE表示合格,然後:
essay[is_below_avg]
[1] 4 6 8 3

#相反,列出合格分數:
essay[!is_below_avg]
[1] 11

#列成matrix,命名為grades:
as.matrix(essay)
[,1]
[1,] 4
[2,] 6
[3,] 8
[4,] 11
[5,] 3

as.matrix(exam)
[,1]
[1,] 20
[2,] 10
[3,] 16
[4,] 17
[5,] 13

grades <- cbind(essay, exam)
grades
essay exam
[1,] 4 20
[2,] 6 10
[3,] 8 16
[4,] 11 17
[5,] 3 13

#計算row means,並嵌在grades的matrix
final <- rowMeans(grades)
final
[1] 12 8 12 14 8
grades <- cbind(grades, final)
grades
essay exam final
[1,] 4 20 12
[2,] 6 10 8
[3,] 8 16 12
[4,] 11 17 14
[5,] 3 13 8

#直至這刻,只有column名稱:
dimnames(grades)
[[1]]
NULL

[[2]]
[1] “essay" “exam" “final"

#設立row名稱,如果用column數目辨別學生,那可以先定義「ID」,數目由1至末列,再指派至rownames:
ID <- c(1:nrow(grades))
rownames(grades) <- ID
grades
essay exam final
1 4 20 12
2 6 10 8
3 8 16 12
4 11 17 14
5 3 13 8

#同理,可以加入人名:
student.names <- c(“Ann","Ben","Cox","Dan","Eos")
rownames(grades) <- student.names
grades
essay exam final
Ann 4 20 12
Ben 6 10 8
Cox 8 16 12
Dan 11 17 14
Eos 3 13 8

#subsetting

grades[1,2]
[1] 20

grades[1,]
essay exam final
4 20 12

grades[1:2,]
essay exam final
Ann 4 20 12
Ben 6 10 8

#ifslse

#表示一個pass / fail列,可以運用「ifelse」函數,10分或以上就是「Pass」,其餘是「Fail」。
pass <- ifelse(grades[,3]>=10, “Pass", “Fail")
pass
Ann Ben Cox Dan Eos
“Pass" “Fail" “Pass" “Pass" “Fail"
grades <- cbind[grades, pass]
Error in cbind[grades, pass] :
object of type ‘closure’ is not subsettable

#這個問題是由於matrix不容許數目和text strings同時存在。解決方法是轉換成為factor形式。
pass <- factor(pass)
grades <- cbind(grades, pass)
grades

#subsetting, again

#如果抽取合格的學生資料,可以用以下syntax:
grades[grades[,"pass"] == 2,]
essay exam final pass
Ann 4 20 12 2
Cox 8 16 12 2
Dan 11 17 14 2

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

Information

This entry was posted on 2015/01/04 by in Uncategorized and tagged , .

網誌統計

  • 68,187 點擊次數
William on the way

…………我,在途上,義無反顧…………

Shenzhen Noted

blogging urban change since 2005

窮游破事兒

遊記、時評、採訪心得、滄海遺珠

思敏愛南洋

I Am Sze Ming Lee

東亞新觀點

走入亞洲,專門關注東亞國際政經動態

失去。擁有

人一直在尋求依賴,我們太害怕未知,寧願選擇一成不變。到頭來,其實我們從來都是一個人。

looking for the story that matters

續尋。留聲的一二事 | 方欣浩

基進報導

為無權者充權

死也要去旅行

一個精算師, 在香港返工太沉悶, 不習慣在一個地方呆得太久. 最近, 跟公司請了半年假, 決定要用一雙腳踏遍南美洲的土地

凍啡走甜

Justin Yip。第四代香港人。好懶醒,自大又自卑。面前有珍饈百味,但總覺隔離飯香。

Awesome Life

If you are adventurous in your choices, you’ll have a lot more fun and excitement

0987255046o

A modern business theme

%d 位部落客按了讚: