《R数据科学实战:工具详解与案例分析 》 —2.2.3 as_tibble—转换已有格式的数据集

举报
华章计算机 发表于 2019/11/09 18:39:44 2019/11/09
【摘要】 本节书摘来自华章计算机《R数据科学实战:工具详解与案例分析》 一书中第二章,第2.2.3节,作者刘 健 邬书豪 。

2.2.3 as_tibble—转换已有格式的数据集

在转换数据的格式之前,可以使用is_tibble来测试目标对象是否已是tbl格式,该函数只需要对象名称这一个参数即可。

可以通过as_tibble函数将对象已有的格式(vector、matrix、list和data.frame等)转换成tbl。表2-8中列出了常见对象格式的转换注解。

表2-8 常见R对象与tibble格式的转换注解

image.png

下面通过具体的代码来说明使用as_tibble函数将常见的R对象转换成tibble格式的具体方法。

(1)as_tibble函数直接将vector格式转换成数据框格式

1)随机设置一组向量,保存为y。

2)检视向量y。

3)调用as_tibble函数直接转换,并将结果显示到console中。

实现代码具体如下:

> y <- 1:3

> y

## [1] 1 2 3

> as_tibble(x = y)

向量转换成tibble格式的结果如表2-9所示。

表2-9 向量被转换成tibble格式后结果

image.png

 

(2)矩阵格式转换

首先创建一个名为b的示例矩阵,矩阵按照行排列数字1到9,行数和列数同为3,行名为“Row1”“Row2”“Row3”,列名为“col1”“col2”“col3”。表2-10中显示了移除行名—设置rownames = NULL的结果,表2-11为保留行名设置rownames = NA的结果。

实现代码具体如下:

> b <- matrix(data = 1:9,nrow = 3,ncol = 3,byrow = T,dimnames = list(paste0("Row",1:3),paste0("col",1:3)))

> b

    ##      col1 col2 col3

## Row1    1    2    3

## Row2    4    5    6

## Row3    7    8    9

    > as_tibble(x = b,rownames = NULL)

    > as_tibble(x = b,rownames = NA)

表2-10 函数as_tibble中参数rownames设置为NULL的结果

image.png

 

表2-11 函数as_tibble中参数rownames设置为NA的结果

 image.png

 

(3)传统数据框格式转换

传统数据框格式转换与转换矩阵格式基本相同,读者可以自行试验。

(4)列表格式转换

列表格式转换一定要注意列表中要素的长度,即每个要素中所拥有的数值个数。

下面的代码创建了一个名为“l”的列表,列表中包含了三个要素,分别是a、b和c。其中,要素a包含三个数值,要素b包含三个字母数值,要素c只有一个数字,创建列表的代码如下:

    > l <- list(a = 1:3,b = letters[2:4],c = 1)

    > l

    ## $a

## [1] 1 2 3

##

## $b

## [1] "b" "c" "d"

##

## $c

## [1] 1

执行函数as_tibble可以毫无压力地将该列表转换成“tbl”格式,每个要素单独成为一个变量,原列表中的要素c中的数值将被重复使用三次以对应其他变量的长度。如果要素c的长度为2,即包含两个数值,那么转换会失败。as_tibble函数代码如下:

> as.tibble(x = l)

表2-12显示的是列表转换成功后的结果。

表2-12 列表格式转换为tibble格式结果

image.png

 

tibble包中另一个可以转换数据格式的函数是enframe函数。该函数的优势在于格式转换时可对向量数据进行编号。以一个长度为3的数值向量为例,运行该函数之后,会得到一个拥有两个变量,每个变量包含三个数值的数据框,第一个变量名为“name”,是对数值向量的对应编号。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。