使用tibble實現簡單資料框(tibble、data.frame)
使用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
資料框是一種表格式的資料結構,資料框旨在模擬資料集,與其他統計軟體例如
資料集通常由資料構成一個舉行陣列,行表示觀測,列表示變數,不同的行業對於資料集的行和列叫法不同.
資料框實際上是一個列表,列表中的元素是向量,這些向量構成資料框的列,每一個列必須具有相同的長度,所以資料框是矩形結構,而且資料框的列必須命名.
矩陣與資料框
資料框形狀上很像矩陣
資料框是比較規則的列表
矩陣必須為同一個資料型別
資料框每一列必須同一型別,每一行可以不同
iris資料集是一個數據框,其他還有mtcars,rock等
資料框可以通過data.frame()函式建立,類似於excle中的表格
資料框的索引,state[1]輸出第一列,state[c(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"]]
本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/15577311.html