R语言tidyverse教程:2 tibble

文章介绍了R语言中的tibble数据结构,它是tidyverse包的一部分,常用于ggplot2绘图。tibble可以从向量、矩阵、列表、数据帧等创建,并提供了更友好的打印输出。文章展示了如何使用tibble、tribble函数创建tibble,以及as.data.frame和as.list进行转换。此外,还讨论了add_row和add_column函数在添加行和列时的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

R语言系列:

简介

tibble是tidyverse重写的一个数据框结构,是ggplot2绘图时的推荐格式,与R Base中的data.frame在大方向上基本上是相同的,故可直接通过data.frame来生成,但在一些细节方面做了优化,比如对在使用print函数时,会提供更具可读性的输出。

> library(tibble)
> rIris = tibble(iris)
> print(rIris)

其打印结果如下


# A tibble: 150 × 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species

1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# … with 140 more rows
# ℹ Use print(n = ...) to see more rows


创建

通过tibble函数可创建一个新的tibble,其输入可以为向量、矩阵、列表、数据帧等,在前面的示例代码中,就是把data.frame数据iris转换为了tibble。

此外,可以通过tribble来创建tibble,并用~声明列名,

tTest <- tribble(~colA, ~colB, "a",   1,"b",   2)
print(tTest)
# 返回值如下
# A tibble: 3 × 2
  colA   colB
  <chr> <dbl>
1 a         1
2 b         2

在使用print函数将tibble打印之后,在列名下面有一个数据类型标识,在tibble中,共有7中数据类型,其标识分别如下

intdblchrdttmlglfctrdate
整数实数字符串日期时间逻辑向量因子

转换

tibbledata.frame, list类型之间可以互相转换

  • as.data.frame tibbledata.frame
  • as.list tibblelist
  • as_tibble 将其他格式强制转化为tibble

将二者打印出来之后,可以更清晰地观察彼此的差别

> data <- data.frame(a=1:3, b=letters[1:3], c=Sys.Date() - 1:3)
> data
  a b          c
1 1 a 2023-04-17
2 2 b 2023-04-16
3 3 c 2023-04-15
> as_tibble(data)
# A tibble: 3 × 3
      a b     c         
  <int> <chr> <date>    
1     1 a     2023-04-17
2     2 b     2023-04-16
3     3 c     2023-04-15

增加行或者列

add_rowadd_column函数可以非常便捷地为tibble增添行或者列,例如

> add_column(tbl, d = 0)
# A tibble: 3 × 4
      a b     c              d
  <int> <chr> <date>     <dbl>
1     1 a     2023-04-17     0
2     2 b     2023-04-16     0
3     3 c     2023-04-15     0

其逻辑是声明一个列名,然后向列中添加数据,如果添加的是单个值,则将这一列所有值都设置成这个值,否则可以逐行设值。

add_row, add_columln支持管道%>%操作,示例如下

> tbl %>% add_row(a=1, b='d', c=Sys.Date())
# A tibble: 4 × 3
      a b     c         
  <dbl> <chr> <date>    
1     1 a     2023-04-17
2     2 b     2023-04-16
3     3 c     2023-04-15
4     1 d     2023-04-18

其中%>%为管道操作符,可以理解为将左侧的数据推送给右侧的函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值