搜索
查看: 48|回复: 0

[R] <R for Data Science> 读书笔记6 | 第十章: Tibbles

[复制链接]

10

主题

16

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2018-11-7 13:46:27 | 显示全部楼层 |阅读模式
本帖最后由 冒刷 于 2018-11-7 15:27 编辑


写在第十章的前面 - 关于data wrangling的介绍

Data wrangling: to get the data into R in a useful form for visualisation and modelling.

  
- Chapter 10 - Tibbles: data frames
- Chapter 11 - Data import
- Chapter 12 - Tidy data: makes data transformation, visualisation and modelling easier
- Data transformation
       Chapter 13 - Relational data: multiple interrelated datasets      
       Chapter 14 - Strings
       Chapter 15 - Factors: are how R stores categorical data
       Chapter 16 - Dates and times


10  Tibbles | a data frame
10.1 简介
本章节中,无特别说明时,tibble和data frame均指tibble,若特指R内置的传统数据框,称为data.frame。

10.1.1 准备工作
[AppleScript] 纯文本查看 复制代码
library(tidyverse)[/font][/color]
#tidyverse的tibble包构建tibble数据框

10.2 创建tibbles
1. 将传统数据框转换为tibble,函数as_tibble()
[AppleScript] 纯文本查看 复制代码
as_tibble(iris)

2. 新建tibble
2.1 使用函数tibble()
[AppleScript] 纯文本查看 复制代码
tibble(x = 1:5, y = 1, z = x^2 + y)
可以在tibble中使用在R中无效的(不符合语法的)变量名称。如列名称可以不以字母开头,也可包含如空格等特殊字符,要想引用这样的变量,需使用反引号`。如果要在ggplot2,dplyr和tidyr等其他R包中使用这些变量,也要用反引号`。
[AppleScript] 纯文本查看 复制代码
tb <- tibble(`:)` = "smile", ` ` = "space", `2000` = “number")

2.2 使用函数tribble(), i.e. transposed tibble转置tibble的简称
tribble()是定制化的,可对数据按行编码:列标题由公式(以~开头),数据输入以逗号分隔。
优点:数据布局易读。
[AppleScript] 纯文本查看 复制代码
tribble(
~x, ~y, ~z,
#--|--|----
"a", 2, 3.6,
"b", 1, 8.5
)
# 可以加一行注释来醒目标题行的位置
# 这里的换行通过ctrl+enter实现
10.3 Tibbles vs. data.frame
对比tibbles和R传统数据框的两处不同:打印和取子集。
10.3.1 打印
tibbles对打印方法进行了优化,默认只显示前10行结果,所有列是根据屏幕大小进行调整显示,尤其适合大数据
[AppleScript] 纯文本查看 复制代码
tibble(
a = lubridate::now() + runif(1e3) * 86400,
b = lubridate::today() + runif(1e3) * 30,
c = 1: 1e3,
d = runif(1e3),
e = sample(letters, 1e3, replace = TRUE)
)

使用print()函数自定义打印的效果
[AppleScript] 纯文本查看 复制代码
nycflights13::flights %>% print(n = 12, width = Inf) # rows(n) and width = Inf will display all columns

使用options()函数自定义打印的效果
[AppleScript] 纯文本查看 复制代码
options(tibble.print_max = n, tibble.print_min = m)
# if more than m rows, print only up to n rows
options(tibble.print_min = Inf)
# print all rows
options(tibble.width = Inf)
# print all columns, regardless of the width of the screen

查看完整数据集,常常用到的方法
[AppleScript] 纯文本查看 复制代码
nycflights13::flights %>% View()
# 或
library(nycflights13)
View(flights)
# 注意:nycflights13是一个R包,若不加载该包,直接View()无法查看该包的数据(flights),但可以在不加载包的情况下运用管道操作符直接查看。

10.3.2 取子集 Subsetting
tools: [[ 可按名称或位置提取变量;$ 只按名称提取变量,但可减少输入。
[AppleScript] 纯文本查看 复制代码
df <- tibble(x = runif(5), y = rnorm(5))[/font]

# Extract by name[/align]df$x
# [1] 0.1025258 0.2104965 0.9529712 0.1287902 0.5779492
df[[“x"]]
# [1] 0.1025258 0.2104965 0.9529712 0.1287902 0.5779492

# Extract by pos
df[[1]]
# [1] 0.1025258 0.2104965 0.9529712 0.1287902 0.5779492

# use these in a pipe with the special placeholder .
df %>% .$x
# [1] 0.1025258 0.2104965 0.9529712 0.1287902 0.5779492
df %>% .[[“x"]]
# [1] 0.1025258 0.2104965 0.9529712 0.1287902 0.5779492


10.4 与旧代码交互
有些旧函数不支持tibble,可使用as.data.frame()函数将tibble转换回data.frame。
[AppleScript] 纯文本查看 复制代码
class(as.data.frame(tb))
# [1] “data.frame"


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:1106 chapter 15
下一篇:R for data science 第四章第六章
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2018-11-16 22:49 , Processed in 0.034255 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.