使用tibble實現簡單數據框
1.1 創建tibble
as_tibble(iris)
可以通過 tibble() 函數使用一個向量來創建新 tibble。tibble() 會自動重復長度為 1 的輸入,並可以使用剛剛創建的新變量,如下所示:
tibble( x = 1:5, y = 1, z = x ^ 2 + y )
tibble() 函數的功能要少得多:它不能改變輸入的類型(例如,不能將字符串轉換為因子)、變量的名稱,也不能創建行名稱。
可以在 tibble 中使用在 R 中無效的變量名稱(即不符合語法的名稱)作為列名稱。例如,
列名稱可以不以字母開頭,也可以包含特殊字符(如空格)。要想引用這樣的變量,需要使用反引號 ` 將它們括起來:
tb <- tibble( `:)` = "smile", ` ` = "space", `2000` = "number" ) tb
tribble 是 transposed tibble(轉置 tibble)的縮寫。tribble() 是定制化的,可以對數據按行進行編碼:列標題由公式(以 ~ 開頭)定義,數據條目以逗號分隔,這樣就可以用易讀的方式對少量數據進行布局:
tribble( ~x, ~y, ~z, #--|--|---- "a", 2, 3.6, "b", 1, 8.5 )
1.2 創建數據框data.frame
數據框是一種表格式的數據結構,數據框旨在模擬數據集,與其他統計軟件例如SAS和SPSS中的數據集一致.
數據集通常由數據構成一個舉行數組,行表示觀測,列表示變量,不同的行業對於數據集的行和列叫法不同.
數據框實際上是一個列表,列表中的元素是向量,這些向量構成數據框的列,每一個列必須具有相同的長度,所以數據框是矩形結構,而且數據框的列必須命名.
矩陣與數據框
數據框形狀上很像矩陣
數據框是比較規則的列表
矩陣必須為同一個數據類型
數據框每一列必須同一類型,每一行可以不同
iris數據集是一個數據框,其他還有mtcars,rock等
數據框可以通過data.frame()函數創建,類似於excle中的表格
數據框的索引,state[1]輸出第一列,state[c(2,4)]輸出第2列和第4列,state[-c(2,4)]刪除第2列和第4列
通過名字索引,通過這個符號$索引
women數據集里面有身高體重
plot()函數可以顯示散點圖
利用lm()函數進行線性回歸,直接給出列名即可
lm(weight ~height,data=women) 與下面的一句話作用一樣
attach()加載數據框,之后只需要輸入列名就可以顯示數據了
rownames(mtcars)顯示數據集mtcars的行名,colnames(mtcars)顯示數據集mtcars的列名,並通過行名、列名查詢顯示
detach(mtcars)函數可以去除此數據框
with()函數加載數據框並顯示,不需要這個符號$
1.2.1數據框操作--基本數據管理
R基本數據管理--創建變量,變量重編碼和重命名
數據框增加列,可以使用符號$
自定義數據框
賦值操作,變量的重編碼
賦值並判斷,也就是變量的重編碼,主要使用中括號[]
重命名
通過索引重命名
2對比tibble與data.frame
tibble 和傳統 data.frame 的使用方法主要有兩處不同:打印和取子集。
2.1 打印
tibble 的打印方法進行了優化,只顯示前 10 行結果,並且列也是適合屏幕的,這種方式非
常適合大數據集。除了打印列名,tibble 還會打印出列的類型,這項非常棒的功能借鑒於str() 函數。
tibble( a = lubridate::now() + runif(1e3) * 86400, b = lubridate::today() + runif(1e3) * 30, c = 1:1e3, d = runif(1e3), e = sample(letters, 1e3, replace = TRUE) )
可以明確使用 print() 函數來打印數據框,並控制打印的行數(n)和顯示的寬度(width)。width = Inf 可以顯示出所有列:
nycflights13::flights %>%
print(n = 10, width = Inf)
還可以通過設置以下選項來控制默認的打印方式。
options(tibble.print_max = n, tibble.pring_min = m):如果多於 m 行,則只打印出 n行。options(tibble.print_min = Inf) 表示總是打印所有行。
options(tibble.width = Inf) 表示總是打印所有列,不考慮屏幕的寬度。
2.2 取子集
如 $ 和 [[。[[ 可以按名稱或位置提取變量;$ 只能按名稱提取變量,但可以減少一些輸入:
df <- tibble( x = runif(5), y = rnorm(5) ) # 按名稱提取 df$x df[["x"]]
# 按位置提取
df[[1]]
在管道中使用這些提取操作,需要使用特殊的占位符 . :
df %>% .$x df %>% .[["x"]]