《R数据科学实战:工具详解与案例分析 》 —2.2.3 as_tibble—转换已有格式的数据集
2.2.3 as_tibble—转换已有格式的数据集
在转换数据的格式之前,可以使用is_tibble来测试目标对象是否已是tbl格式,该函数只需要对象名称这一个参数即可。
可以通过as_tibble函数将对象已有的格式(vector、matrix、list和data.frame等)转换成tbl。表2-8中列出了常见对象格式的转换注解。
表2-8 常见R对象与tibble格式的转换注解
下面通过具体的代码来说明使用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格式后结果
(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的结果
表2-11 函数as_tibble中参数rownames设置为NA的结果
(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格式结果
tibble包中另一个可以转换数据格式的函数是enframe函数。该函数的优势在于格式转换时可对向量数据进行编号。以一个长度为3的数值向量为例,运行该函数之后,会得到一个拥有两个变量,每个变量包含三个数值的数据框,第一个变量名为“name”,是对数值向量的对应编号。
- 点赞
- 收藏
- 关注作者
评论(0)