参见:https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/prog-type-df.html
tibble类型是一种改进的数据框类型的数据,可以通过readr 包实现读取。
library(tibble)
library(readr)
t.class <- read_csv("class.csv")
## Parsed with column specification:
## cols(
## name = col_character(),
## sex = col_character(),
## age = col_double(),
## height = col_double(),
## weight = col_double()
## )
tibble类型的类属依次为tbl_df, tbl, data.frame,用as_tibble()可以将一个数据框转换为tibble,或者直接通过tibble 像创建数据框般创建tibble 数据框:
t.bp <- tibble(
`序号`=c(1,5,6,9,10,15),
`收缩压`=c(145, 110, "未测", 150, "拒绝", 115))
t.bp
我们可以用对数据框的相同操作来处理tibble 类型的数据。
除此之外,tibble 非常喜欢csv 数据,因此也可以像创建csv 数据般,直接通过tribble 创建:
t.bp2 <- tribble(
~`序号`,~`收缩压`,
1,145,
5,110,
6,NA,
9,150,
10,NA,
15,115
)
t.bp2
## # A tibble: 6 x 2
## 序号 收缩压
## <dbl> <dbl>
## 1 1 145
## 2 5 110
## 3 6 NA
## 4 9 150
## 5 10 NA
## 6 15 115
另外,tidyr::expand_grid()
函数提供了另外一种可能,可以通过指定n 个分组,细分出多个因素完全搭配并重复的表格,比如:
d4 <- tidyr::expand_grid(
group=1:3,
subgroup=1:2,
obs=1:2)
print(d4)
## # A tibble: 12 x 3
## group subgroup obs
## <int> <int> <int>
## 1 1 1 1
## 2 1 1 2
## 3 1 2 1
## 4 1 2 2
## 5 2 1 1
## 6 2 1 2
## 7 2 2 1
## 8 2 2 2
## 9 3 1 1
## 10 3 1 2
## 11 3 2 1
## 12 3 2 2
结果的数据框d有三个变量: group是大组,共分3个大组,每组4个观测; subgroup是子组,在每个大组内分为2个子组,每个子组2个观测。 共有个12 观测(行)。
另外,tibble类型允许其中的列是列表类型, 这样, 该列的每个元素就可以是复杂类型, 比如建模结果(列表), 元素之间可以保存不等长的值。 如:
tibble(x = 1:3,
y = list(1, 1:2, 1:3))
## # A tibble: 3 x 2
## x y
## <int> <list>
## 1 1 <dbl [1]>
## 2 2 <int [2]>
## 3 3 <int [3]>