01-RBasic-04-Factors
-------------------------------
01.factor()是一個向量物件,用途是儲存「類別」的資料。Factor向量很像文字向量,但多出額外的分類名稱彙整資訊,levels這個屬性。實際上Factor向量本質上只是整數向量加上levels。這樣設計的原因是儲存整數比儲存文字更省空間。
02. Factor向量中的levels屬性代表向量中允許出現的類別。 可使用levels()函數來查詢或設定分類資料。
03. 在Factor向量中指派沒在levels裡面的類別,會出現NA。
04. R預設是以字母順序排序levels
05.「類別」的資料有兩種。分為「無順序」與「有順序」的。對於無順序的資料硬要去比大小,R會印出警告訊息。 想轉為有順序的factor向量。做法是在factor函數中,把ordered設為TRUE。 並且把levels順序以向量方式傳入,level要由小到大填入。
> grades <- C("A","C","B","B","A")
> grades_factor<-factor(grades,ordered=TRUE,levels=c("C","B","A"))
> grades_factor
[1] A C B B A
Levels: C < B < A
06. 總的來說factor向量用來儲存類別的資料。level屬性限制能在向量中出現的類別種類。 Factor本質上是整數向量,只是帶有levels。 Factor可以是無順序或有順序的,可用在Factor函數中使用ordered=TRUE讓Factor變成有序。
勿忘本心但記初衷...隨著忙碌與歲月總讓人漸漸忘記那單純的起點,
或許......是時候將那生活的足跡與成長的軌跡記錄下來了...........
勇気を翼にこめて 希望の風にのり
このひろい大空に 夢をたくして
2016年6月10日 星期五
2016年6月9日 星期四
Swirl_01-RBasic-03-Data-Structure-Object
01-RBasic-03-Data-Structure-Object
-----------------------------------------------
01. 向量物件有兩個很重要的屬性:`mode`和`length`。
- `mode`代表這個向量的值型態,總共有: `logical`、`integer`、`numeric`、`complex`、`character`和`raw`。
- `length`代表這個向量的值的個數。
02. `[ ]`和`[[ ]]`的差異。單層方括弧`[ ]`,R 取出向量的元素並且維持原有屬性,除了傳回元素值外也傳回names與其他屬性。使用雙層方括弧`[[ ]]`時,R 會只傳回元素值。
03. list向量最有用的地方,在於它可以裝不同型態的值。包含不同屬性、不同長度的數值、文字、向量甚至是矩陣。
04. 所有的R 物件,都有「屬性」(attributes)。我們可以用`attributes`這個函數來印出一個R 物件的屬性與屬性內容。
> attributes(g)
$names
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
$class
[1] "lm"
05. `names(g)`來查詢`g`的名字
> names(g)
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
也可以用`attr(g, "names")`來取得名字是"names"的屬性
> attr(g, "names")
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
06. `class(g)`來查詢`g`的類別
> class(g)
[1] "lm"
07. 了解像attributes這樣的功能,在探索一些複雜的R模型物件時,是非常好用的。我們在之後深入探討`matrix`、`data.frame`等進階物件的時候, 也會需要了解attributes的相關的知識。而名稱為"class"的屬性是非常重要的,因為它牽涉到R的物件導向設計。
-----------------------------------------------
01. 向量物件有兩個很重要的屬性:`mode`和`length`。
- `mode`代表這個向量的值型態,總共有: `logical`、`integer`、`numeric`、`complex`、`character`和`raw`。
- `length`代表這個向量的值的個數。
02. `[ ]`和`[[ ]]`的差異。單層方括弧`[ ]`,R 取出向量的元素並且維持原有屬性,除了傳回元素值外也傳回names與其他屬性。使用雙層方括弧`[[ ]]`時,R 會只傳回元素值。
03. list向量最有用的地方,在於它可以裝不同型態的值。包含不同屬性、不同長度的數值、文字、向量甚至是矩陣。
04. 所有的R 物件,都有「屬性」(attributes)。我們可以用`attributes`這個函數來印出一個R 物件的屬性與屬性內容。
> attributes(g)
$names
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
$class
[1] "lm"
05. `names(g)`來查詢`g`的名字
> names(g)
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
也可以用`attr(g, "names")`來取得名字是"names"的屬性
> attr(g, "names")
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign"
[7] "qr" "df.residual" "xlevels" "call" "terms" "model"
06. `class(g)`來查詢`g`的類別
> class(g)
[1] "lm"
07. 了解像attributes這樣的功能,在探索一些複雜的R模型物件時,是非常好用的。我們在之後深入探討`matrix`、`data.frame`等進階物件的時候, 也會需要了解attributes的相關的知識。而名稱為"class"的屬性是非常重要的,因為它牽涉到R的物件導向設計。
Swirl_01-RBasic-02-Data-Structure-Vectors
01-RBasic-02-Data-Structure-Vectors
---------------------------------------------
01. `max(x)`會傳回x 中最大的值,而`min(x)`會傳回x 最小的值
02. 函數`range`就能直接傳回輸入向量的 範圍(最小到最大)
03. `sum(x)`會傳回x 所有值的加總。 `length(x)`函數能直接傳回x 的長度
04. `mean(x)`就能直接 計算x的平均值
05. `var(x)`樣本變異數: `sum((x - mean(x))^2) / (length(x)-1)`
06. `sd(x)`計算x 的樣本標準差
07. `sort(x)`則會產生一個和x 長度一樣的向量,但是值是 由小到大排列
08. `sqrt(x)`代表的就是數學上開根號的運算
09. 產生一些附帶有規則的序列。例如: `1:10`就會產生自1至10的序列。`seq(1, 10)`其實就是`1:10`
10. `:`這個運算子的優先層級很高,也就是說如果R 看到:`2 * 1:10`這段expression,會優先處理`1:10`,然後再把所有結果乘以2
11. 想要重複一個數字,則可以用`rep(x)`
12. 在R 中,邏輯值「真」常用`TRUE`或`T`來代表。「假」則用`FALSE`或`F`代表。第三種在邏輯向量會出現的值,就是NA(Not Available)
13. 邏輯向量的「條件」有:大於`>`、大於等於`>=`、 小於`<`、小於等於`<=`、相等`==`和不相等`!=`。
14. 邏輯運算子「且」`&`和「或」`|`
15. 當資料的值無法取得的時候,R 就會給它一個特殊的記號:NA
16. `is.na(x)`來判斷一個向量裡面有沒有NA
17. NA和NaN。 NA代表的是缺失值,而NaN往往來自於數學運算中沒有定義的行為。 例如:`sqrt(-17)`、`0/0`和`Inf - Inf`。在R 裡面,無限大就是`Inf`
18. 雖然我們理解NA和NaN的不同,但是`is.na`會把兩者都看成TRUE
19. 「字串」是透過單引號`'`或雙引號`"`來建立的
20. 在R 中,`\`符號代表字串中的跳脫符號。舉例來說,如果我們要輸入一個包含雙引號的字串,有兩種方法:一種是用單引號`'`來包覆雙引號,另外一種就是在雙引號之前插入`\`
21. `paste(x)`是在R中常常用來做字串處理的函數。我們可以丟任意個 arguments 給`paste`,結果R會把這些argument以字串的形式接成一個字串。
> paste(c("X", "Y"), 1:10)
[1] "X 1" "Y 2" "X 3" "Y 4" "X 5" "Y 6" "X 7" "Y 8" "X 9" "Y 10"
22. `paste0`預設在串接字串的時候,中間是不會有空格
> paste0(c("X", "Y"), 1:10)
[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
23. 挑選向量中一部份的資料。x<- c(10.4,5.6, 3.1, 6.4)
第一種方法,使用坐標。如果要挑選x 的 第一和第三個位置的值,只要使用:`x[c(1,3)]`
第二種方法,是利用邏輯向量。如果要 挑選x 之中超過5 的值,就透過`x[x > 5]`
第三種方法,是削去法。如果要挑x _除了_第二個之外的 全部的值,可以使用`x[-2]`
24. R的向量中,每一個值是可以有名字的。舉例來說,我們可以透過: `names(x) <- c("a", "b", "c", "d")`來幫x的每個值取名
> x
a b c d
10.4 5.6 3.1 6.4
---------------------------------------------
01. `max(x)`會傳回x 中最大的值,而`min(x)`會傳回x 最小的值
02. 函數`range`就能直接傳回輸入向量的 範圍(最小到最大)
03. `sum(x)`會傳回x 所有值的加總。 `length(x)`函數能直接傳回x 的長度
04. `mean(x)`就能直接 計算x的平均值
05. `var(x)`樣本變異數: `sum((x - mean(x))^2) / (length(x)-1)`
06. `sd(x)`計算x 的樣本標準差
07. `sort(x)`則會產生一個和x 長度一樣的向量,但是值是 由小到大排列
08. `sqrt(x)`代表的就是數學上開根號的運算
09. 產生一些附帶有規則的序列。例如: `1:10`就會產生自1至10的序列。`seq(1, 10)`其實就是`1:10`
10. `:`這個運算子的優先層級很高,也就是說如果R 看到:`2 * 1:10`這段expression,會優先處理`1:10`,然後再把所有結果乘以2
11. 想要重複一個數字,則可以用`rep(x)`
12. 在R 中,邏輯值「真」常用`TRUE`或`T`來代表。「假」則用`FALSE`或`F`代表。第三種在邏輯向量會出現的值,就是NA(Not Available)
13. 邏輯向量的「條件」有:大於`>`、大於等於`>=`、 小於`<`、小於等於`<=`、相等`==`和不相等`!=`。
14. 邏輯運算子「且」`&`和「或」`|`
15. 當資料的值無法取得的時候,R 就會給它一個特殊的記號:NA
16. `is.na(x)`來判斷一個向量裡面有沒有NA
17. NA和NaN。 NA代表的是缺失值,而NaN往往來自於數學運算中沒有定義的行為。 例如:`sqrt(-17)`、`0/0`和`Inf - Inf`。在R 裡面,無限大就是`Inf`
18. 雖然我們理解NA和NaN的不同,但是`is.na`會把兩者都看成TRUE
19. 「字串」是透過單引號`'`或雙引號`"`來建立的
20. 在R 中,`\`符號代表字串中的跳脫符號。舉例來說,如果我們要輸入一個包含雙引號的字串,有兩種方法:一種是用單引號`'`來包覆雙引號,另外一種就是在雙引號之前插入`\`
21. `paste(x)`是在R中常常用來做字串處理的函數。我們可以丟任意個 arguments 給`paste`,結果R會把這些argument以字串的形式接成一個字串。
> paste(c("X", "Y"), 1:10)
[1] "X 1" "Y 2" "X 3" "Y 4" "X 5" "Y 6" "X 7" "Y 8" "X 9" "Y 10"
22. `paste0`預設在串接字串的時候,中間是不會有空格
> paste0(c("X", "Y"), 1:10)
[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
23. 挑選向量中一部份的資料。x<- c(10.4,5.6, 3.1, 6.4)
第一種方法,使用坐標。如果要挑選x 的 第一和第三個位置的值,只要使用:`x[c(1,3)]`
第二種方法,是利用邏輯向量。如果要 挑選x 之中超過5 的值,就透過`x[x > 5]`
第三種方法,是削去法。如果要挑x _除了_第二個之外的 全部的值,可以使用`x[-2]`
24. R的向量中,每一個值是可以有名字的。舉例來說,我們可以透過: `names(x) <- c("a", "b", "c", "d")`來幫x的每個值取名
> x
a b c d
10.4 5.6 3.1 6.4
Swirl_01-RBasic-01-Introduction
01-RBasic-01-Introduction
---------------------------------------
01. 查詢函數的詳細說明,例如solve這個函數就輸入:`help(solve)`或`?solve`
02. 多個expression可以用`{`和`}`包覆起來,變成一個大的expression。如果有一個expression還沒有完成,(可能是少了`)`或`}`),那R 會在console的開頭用`+`來提示你。
03. 在程式碼中插入註解:`#`。所有在# 之後的輸入,R 都會略過
04. `objects()`或`ls()`來列出所有目前存在的object 的名字
05. 刪除已經存在的物件。舉例來說,如果我們要刪除`a`, 就只要輸入:`rm(a)`
06. 每次退出R的時候,你都有機會把所有的物件存到一個叫做 .RData的檔案之中。之後,只要在相同的目錄打開R,這些資料就會自動進入R。所以R 官方建議使用者在不同的分析專案時,在不同的目錄底下跑R。因為我們常常在分析的時候,建立一些名叫`x`或`y`的變數。 在相同的案子中,`x`和`y`可能是很明顯的。但是當我們同時做很多分析時,就容易搞不清楚`x`是哪一個分析案子的`x`。
---------------------------------------
01. 查詢函數的詳細說明,例如solve這個函數就輸入:`help(solve)`或`?solve`
02. 多個expression可以用`{`和`}`包覆起來,變成一個大的expression。如果有一個expression還沒有完成,(可能是少了`)`或`}`),那R 會在console的開頭用`+`來提示你。
03. 在程式碼中插入註解:`#`。所有在# 之後的輸入,R 都會略過
04. `objects()`或`ls()`來列出所有目前存在的object 的名字
05. 刪除已經存在的物件。舉例來說,如果我們要刪除`a`, 就只要輸入:`rm(a)`
06. 每次退出R的時候,你都有機會把所有的物件存到一個叫做 .RData的檔案之中。之後,只要在相同的目錄打開R,這些資料就會自動進入R。所以R 官方建議使用者在不同的分析專案時,在不同的目錄底下跑R。因為我們常常在分析的時候,建立一些名叫`x`或`y`的變數。 在相同的案子中,`x`和`y`可能是很明顯的。但是當我們同時做很多分析時,就容易搞不清楚`x`是哪一個分析案子的`x`。
Swirl_00-Hello-DataScienceAndR
發現了R 語言翻轉教室這個好站....
http://datascienceandr.org/
可以用互動式的方式在R實作....
比啃書本快多了....
學習環境:
00-Hello-DataScienceAndR
-------------------------------------
`skip()` 來看答案並跳過卡住的關卡
`play()` 來暫時中止swirl自由摸索
`nxt()` 回到課程
`bye()` 離開swirl環境
`swirl()` 可以選擇接關,繼續挑戰 離開前的進度。
http://datascienceandr.org/
可以用互動式的方式在R實作....
比啃書本快多了....
學習環境:
- 安裝R
- 安裝Rstudio
- 打開R ,執行:
source("http://wush978.github.io/R/init-swirl.R") - 輸入
library(swirl);swirl()後即進入教學環境。
00-Hello-DataScienceAndR
-------------------------------------
`skip()` 來看答案並跳過卡住的關卡
`play()` 來暫時中止swirl自由摸索
`nxt()` 回到課程
`bye()` 離開swirl環境
`swirl()` 可以選擇接關,繼續挑戰 離開前的進度。
訂閱:
意見 (Atom)