前言
data.frame:最基本,大多函数的设计基于此种结构;读写速度一般
data.table:在data.frame上的改进,读写速度最快;加入了索引操作,结合索引数据处理更方便
tibble:主要在dplyr和tibble包中有效,主要关注于list,支持整洁格式;数据进行懒加载。也就是说,最大的好处是tibble中的元素可以是list类型
用法
加载
可以单独加载也可以通过tidyverse套装进行加载
library(pacman)
p_load(tidyverse)
创建
#1.创建一个tibble类型的数据框
t1<-tibble(x = 1:10, y =LETTERS[1:10])
t1
# A tibble: 10 x 2
x y
<int> <chr>
1 1 A
2 2 B
3 3 C
4 4 D
5 5 E
6 6 F
7 7 G
8 8 H
9 9 I
10 10 J
查看属性
#2.查看t1属性
class(t1)
#[1] "tbl_df" "tbl" "data.frame"
#判断是不是tibble类型
is_tibble(t1)
# [1] TRUE
#查看t1的属性
attributes(t1)
# $names
# [1] "x" "y"
#
# $row.names
# [1] 1 2 3 4 5 6 7 8 9 10
#
# $class
# [1] "tbl_df" "tbl" "data.frame"
#查看t1的静态结构
str(t1)
glimpse(t1)
# Observations: 10
# Variables: 2
# $ x <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
# $ y <chr> "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"
数据类型转换
#3.数据类型转换
d1<-data.frame(x = 1:5, y =LETTERS[1:5]) #data.frame
d1
# x y
# 1 1 A
# 2 2 B
# 3 3 C
# 4 4 D
# 5 5 E
#data.frame -> tibble
d2<-as_tibble(d1)
d2
# # A tibble: 5 x 2
# x y
# <int> <fct>
# 1 1 A
# 2 2 B
# 3 3 C
# 4 4 D
# 5 5 E
#tibble -> data.frame
as.data.frame(d2)
# x y
# 1 1 A
# 2 2 B
# 3 3 C
# 4 4 D
# 5 5 E
#list与tibble可以互相转换
a=tibble(x = list(diag(1), diag(2)));a
# # A tibble: 2 x 1
# x
# <list>
# 1 <dbl[,1] [1 x 1]>
# 2 <dbl[,2] [2 x 2]>
as.list(a)
# $x
# $x[[1]]
# [,1]
# [1,] 1
#
# $x[[2]]
# [,1] [,2]
# [1,] 1 0
# [2,] 0 1
数据查询
#4.tibble数据查询,和dataframe是一样的
#法一:[]按列取,返回tibble
t1[2]
#法二:[[]]或$按列取,返回向量
t1$x
t1[[2]]
#按行取数据,这时一定要用,来做分隔符
t1[1:2,]
t1[1:2, 1]
数据操作
#5.tibble数据操作
#没有改变原数据的值,需要新赋值
#增加一列
add_column(t1, z = 0:9, w = 0)
#在最后,增加一行
add_row(t1, x = 99, y = 9)
#在第二行位置,增加一行
add_row(t1, x = 99, y = 9, .before = 2)
用于处理data.frame的新函数
#6.用于处理data.frame函数
#tibble还提供了一些用于处理data.frame的函数【行列名】
d1
#判断是否有叫x的列
has_name(d1,'x')
#判断是否有行名
has_rownames(d1)
#给d1增加行名
row.names(d1) <- LETTERS[1:5]; d1
#去掉行名
remove_rownames(d1)
#把行名转换为单独的一列
df2<-rownames_to_column(d1, var = "rowname"); df2
#把行索引转换为单独的一列
rowid_to_column(d1, var = "rowid")
相关参考
https://blog.csdn.net/fens/article/details/84634531
https://blog.csdn.net/weixin_43633501/article/details/91353834