tibble包實現簡單數據框(tibble、data.frame)


使用tibble實現簡單數據框

1.1 創建tibble

as_tibble(iris)

 

可以通過 tibble() 函數使用一個向量來創建新 tibbletibble() 會自動重復長度為 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

數據框是一種表格式的數據結構,數據框旨在模擬數據集,與其他統計軟件例如SASSPSS中的數據集一致.

數據集通常由數據構成一個舉行數組,行表示觀測,列表示變量,不同的行業對於數據集的行和列叫法不同.

數據框實際上是一個列表,列表中的元素是向量,這些向量構成數據框的列,每一個列必須具有相同的長度,所以數據框是矩形結構,而且數據框的列必須命名.

矩陣與數據框

數據框形狀上很像矩陣

數據框是比較規則的列表

矩陣必須為同一個數據類型

數據框每一列必須同一類型,每一行可以不同

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對比tibbledata.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"]]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM