在数据采集和分析中,爬取网页中的表格数据是一个常见任务。html_table2 是一个非常实用的 R 包,它可以帮助我们将 HTML 表格快速解析为数据框。...本文将分享如何高效地将 html_table2 的结果转化为更适合分析的 tibble 格式,并展示一个以采集汽车之家(https://www.autohome.com.cn/)汽车品牌和价格信息为例的完整实践...转化为 tibble 的原因可读性:tibble 显示时更加紧凑易读。兼容性:许多 tidyverse 包对 tibble 的支持更佳。操作性:tibble 提供了更强的列操作功能。3....# 提取表格table % html_node("table") %>% html_table2()# 转换为 tibbletable_tibble tibble(table...(url, options = list(proxy = proxy))# 提取表格table % html_node("table") %>% html_table2()# 转换为
让数据变长,就是将许多列融合成两列,将列名移动到一个新的列名下,将值移动到另一个新的列名下。...FALSE, values_ptypes = NULL, values_transform = NULL, ... ) 创建一个宽表: library(knitr) tb_wide = tibble...year cases A 1999 0.7k A 2000 2k B 1999 37k B 2000 80k C 1999 212k C 2000 213k 长数据转宽数据 让数据变宽,就是展开表中的两列数据成多列...tidyr中的pivot_wider与pivot_longer的操作正好相反,可以将长数据转换为宽数据。...最后总结 tidyr包最重要的两个函数是: pivot_longer,将宽数据转换为长数据,就是将很多列变成两列。 pivot_wider,将长数据转换为宽数据,就是将两列变成很多列。
它涵盖了操纵列以便按照您希望的方式获取它们的工具:这可以是计算新列,将列更改为离散值或拆分/合并列。...容易入手:将所有数据转换为小写: msleep %>% mutate_all(tolower) ## # A tibble: 83 x 11 ## name genus vore order...两个level) ifelse()语句可用于将数字列转换为离散列。...Spread将占用一列并从中生成多列。...NA 函数na_if()将特定值转换为NA。
数据框dataframe 一个合适表格就和问卷一样,是包含不同类型的数据的。但需要注意的是,数据框的每一列只 包含一种数据类型 ,也就是说每一列如果单独提取出来,都是一个向量。...如果有列不同的,可以将参数by 改为by.x =, by.y = tibble 参见:https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/..._Rbook/prog-type-df.html tibble类型是一种改进的数据框类型的数据,可以通过readr 包实现读取。...类型的类属依次为tbl_df, tbl, data.frame,用as_tibble()可以将一个数据框转换为tibble,或者直接通过tibble 像创建数据框般创建tibble 数据框: t.bp...nrow=3) #1.统计iris最后一列有哪几个重复值,分别重复了多少次 table(iris[,ncol(iris)]) #2.提取iris的前4列,并转换为矩阵,赋值给test。
工作中经常会碰到这种情况,外部收集来的资料,表格制作者为了排版好看,把表格做成多行多列的格式,这种格式看起来方便,但是做数据处理是非常不方便的,需要进行转换后进行数据处理: ?..."> 转一维表" onAction="rbbtnTarnsTable2To1" supertip="将选择的多行多列表格转换为多行...3列表格。"..., iCols As Long Dim i As Long, j As Long iRows = rngSrc.rows.Count - 1 iCols = rngSrc.Columns.Count...1 Result(pRow, 1) = "行标题" Result(pRow, 2) = "列标题" Result(pRow, 3) = "数据" For i = 2 To
img gt:表格语法 gt 是一个 R 包,它能够通过表格语法将表格数据转换为一个表格!...除了 gt 包,还有以下一些有用的表格相关 R 包: `kableExtra`[2] - 处理 HTML/LaTex 非常好。...image-20201011221935178 添加组别 我们可以通过传入一个分组 tibble 将一个表分成不同的组别: yield_data_wide %>% head() %>% group_by...注意下面我们使用 locations 参数标记要修饰的表格列,而这里并不是指在数据中的位置(2:5),另外我们还可以使用 vars(name)(类似上面) 设定。...image-20201011222233762 使用 tab_header() 为表格添加标题,利用 md() 或 html() 对文字进行修饰。
## #方法1 BioconductorR包(最常用) if(T){ 'GPL32737' #http://www.bio-info-trainee.com/1399.html 查询GPL对应的...,按列取子集——需要解读表格才用的代码 ##https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?...acc=GPL570 先下载GPL对应的txt到本地文件 if(F){ #注:表格读取参数、文件列名不统一,活学活用,有的表格里没有symbol列,也有的GPL平台没有提供注释表格 b = read.delim...形式的exp转换为data.frame library(FactoMineR) library(factoextra) dat.pca <- PCA(dat, graph = FALSE) fviz_pca_ind...,对于我们一般习惯基因名为行,样本名为列的数据框,就需要t()转置 cor()函数求相关系数的时候也是按列计算,如果计算行之间的相关系数也需要对矩阵进行t()转置 参考资料:scale函数对矩阵归一化是按行归一化
R 编程基础 https://shixiangwang.gitee.io/geek-r-tutorial/base.html 内容: 基础语法 控制与循环结构 函数与包 数据读取和保存 read....num_range starts_with ends_with one_of matches 行筛选 slice, filter, sample_n, sample_frac, top_n, distinct 列筛选...tibble tribble, enframe as_tibble, is_tibble 缺失值 drop_na fill replace_na 长转宽 pivot_wider, spread ?...宽转长 pivot_longer, gather ?...拓展表格 expand complete 分割和连接 separate separate_rows unite 数据导出 write_* data.table 与 base 数据导入 fread 数据导出
实现了二维表格转换为一维表格,反过来的功能偶尔也是会用到的: 首先在customUI.xml中增加代码: 转二维表..." onAction="rbbtnTarnsTable1To2" supertip="将选择的多行3列表格转换为多行多列表格。"...,其中第3列必须是数字。"...For i = 0 To dcol.Count - 1 Result(1, i + 2) = tmp(i) Next Dim pRow As Long,...pcol As Long '数据 For i = 2 To UBound(arr) pRow = drow(VBA.CStr(arr(i, 1))) + 1
创建 tibble 的另一种方法是使用 tribble() 函数,tribble 是 transposed tibble(转置 tibble) 的缩写。...打印 tibble 的打印方法进行了优化,只显示前 10 行结果,并且列也是适合屏幕的,这种方式非 常适合大数据集。...,如果想要访问的列不存在,它会生成一条警告信息。...最后总结 tibble 相对于数据框来说,更简单,但更方便使用,两者的主要区别是: tibble 不能创建行名。 tibble 不能改变输入的类型(例如,不能将字符串转换为因子)、变量的名称。...tibble 不能进行部分匹配,如果想要访问的列不存在,它会生成一条警告信息。 tibble 打印时更美观。
展示表格?是的,我们正在尝试将数据表格(如tibbles、data.frame)和你在网页、期刊文章或者杂志中的表格区分开来。后面这种表格可以称为展示表格、汇总表格或者真实的表格。...我们使用dplyr根据它准备一个tibble: # 获取世界10个最大的大陆 islands_tbl <- dplyr::tibble( name = names(islands),...要素(从上到下)包括: 表格头部 (可选,包含标题以及可能得子标题) 根和根头 (可选,包含行组标签、行标签和汇总标签) 列标签 (包含列标签和跨组列标签) 表主体 (包含单元格) 表格脚部 (可选,...至于如何自定义组名的设定和选择,不妨发挥你们得想象力 列标签 类似于行组,使用tab_spanner()可以将多个列划分为不同的组。...我们还可以做下面两件事情 使用cols_move_to_start()将Time列移动到最前面 使用cols_label()自定义列标签 gt_tbl <- gt_tbl %>% cols_move_to_start
其他格式转化,使用as_tibble转换为tibble格式 > dft_1 tibble(mtcars) > dft_1 # A tibble: 32 x 11 mpg cyl...tidyr包的下述四个函数用法 5.1 宽数据转为长数据:gather (excel透视表反向操作) 5.2 长数据转为宽数据:spread (excel透视表功能) 5.3 多列合并为一列:unit...5.4 将一列分离为多列:separat #install.packages("tidyr") #安装tidyr包 library(tidyr) 5.1 宽数据转为长数据:gather() ?...-") wideunite # information #1 Alex-2-78 #2 Bob-3-89 #3 Cathy-4-88 6.4 将一列分离为多列:separate() #separate...()函数可将一列拆分为多列,一般可用于日志数据或日期时间型数据的拆分,语法如下: #separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE
%>% select(-name, -age) %>% head(n=3) %>% knitr::kable() 2.9 表格的长宽转换 gather/spread 可以将本来扁平的数据框变为宽长的数据框...2.10 表格的拆分与合并 将同一列中的内容分为两列内容。或将两列内容合并为同一列内容。 首先还是可以创建一个数据框。...对于即将合并的新列,需要使用引号;但对于想要合并的多个列名,可以不用使用引号。sep 参数设定多列合并后不同数据分隔使用的分割符。...nest 和 unnest 函数,可以将子数据框保存在 tibble 中,可以将保存在 tibble 中的子数据框合并为一个大数据 框。...我们还可以借助unlist 将tibble 元素提取出来:
主要介绍使用pivot_longer进行长宽数据转换,这两个函数都是来自于tidyr包 问题背景 现在有一个表达矩阵,要画箱线图 但是,上面表格不满足向ggplot2画箱线图的函数传递参数的需求,要变换成数据框把所有数字变成一列传递给...首先行列转置 把原来的行名变成第一列 把原来的列名变成第二列 就变成数据框形式了。也就是把宽数据变成长数据。 代码如何实现?...paste0("gene",1:3) colnames(exp) = paste0("test",1:6) exp[,1:3] = exp[,1:3]+1 exp library(tidyr) library(tibble...) library(dplyr) dat = t(exp) %>% # 先转置 as.data.frame() %>% # 变成数据框 rownames_to_column() %>% # 行名变成一列...列名是字符型数据 列名中含有数值型数据,可以names_prefix/names_transform提取,可以用readr包中的parse_number()函数直接解析 列名中含有多个变量可以用正则表达式拆分成多列
首先,我们将需要用到的包导入。...可以看到,读入后的数据是一个tibble类别的变量,tibble是Data Frame格式数据的一种改进,我们在这里可以就将其视作Data Frame格式数据加以后续处理。 ...因此,我们这里需要对宽数据与长数据加以转换;这一转换可以通过melt()函数来实现,具体的代码如下所示。...如以下代码就表示,我们希望将转换后表示变量的列的名称设置为Factor,表示观测值的列的名称设置为q。...接下来,加号后面的geom_bar参数,是我们绘制多序列柱状图所需要设定的,其中position参数设置为"dodge"就表示我们希望将不同的系列平行放置(如果不设置position参数,那么不同系列的柱子就会垂直堆积
另外,该包作者将表格相关的包做了个汇总,我也把它更新到了本文的下方。本文应当可以成为读者使用 R 构建表格的一大入口,值得点赞收藏。 RStudio 提供了出版级的表格解决方案gt包。...是的,我们正在尝试将数据表格(如tibbles、data.frame)和你在网页、期刊文章或者杂志中的表格区分开来。后面这种表格可以称为展示表格、汇总表格或者真实的表格。...# 创建一个显示表格 gt_tbl <- gt(data = islands_tbl) # 展示表格 gt_tbl 这已经不错了。虽然它非常地基础,不过我们确实拿到了一个有合适列标签的表格。...要素(从上到下)包括: 表格头部 (可选,包含标题以及可能得子标题) 根和根头 (可选,包含行组标签、行标签和汇总标签) 列标签 (包含列标签和跨组列标签) 表主体 (包含单元格) 表格脚部 (可选,...类似于行组,使用tab_spanner()可以将多个列划分为不同的组。
" "character" "character" "character" "character" 注意read_csv函数载入的数据框与内置函数read.csv函数是不同的,主要体现在不会将字符串转换为因子变量...一种方法是将product_stats按尺寸降序排列,选择前3个记录的id,然后用id值筛选product_info的行: top3_id = unlist(product_stats[order(product_stats...: 4 x 1 #> id #> #> 1 T02 #> 2 M01 #> 3 M02 #> 4 M04 前面给出的3个表格有共同的id列,可惜R里面内置函数只能一次合并...,我们利用tapply()函数(apply家族成员)可以进行统计,该函数专门用于处理表格数据,使用某些方法根据某列队另一列的数据进行统计。...] "double" class(mean_quality2) #> [1] "matrix" mean_quality2["model", "vehicle"] #> [1] 6 同理我们可以根据多列分组
数据操作速度会更快 如下图,直接查看tibble格式的数据,可以一目了然的看清数据的大小和每列的格式 ? 有两种方式来创建tibble格式的数据 1. 直接创建 ? 2....其他格式转化,例如用read.csv读取的数据默认是dataframe格式,就可以使用as_tibble转换为tibble格式 ?...%>% 的作用就是将iris数据用于管道后面的head函数。...spread() 把数据从长数据(long)还原成宽数据(wide),对比gather()的变换,指定你需要变长的key和value列即可~ ?...统计:broom broom是一个用于数学建模的包,以回归分析为例,R中的各种回归分析往往不会返回一个整齐的data frame结果,而broom 则帮助我们直接将统计结果转化为data frame格式直接将统计结果转化为
sleep_total 1 Owl monkey 17 2 Long-nosed...NA NA 2 Mountain beaver nt 14.4 2.4 NA 五 跨多列筛选...主要筛选函数: filter_all() 所有列参与筛选,根据筛选条件筛选 filter_if() 逻辑判断确定哪些列参与筛选,根据筛选条件筛选 filter_at() vars()函数定义哪些列参与筛选...19.4 6.6 NA 0.37 2 Giant armadillo 18.1 6.1 0.081 60 好了,筛选行大概介绍这么多,...参考资料 《R数据科学》 https://r4ds.had.co.nz/introduction.html https://suzanbaert.netlify.com/2018/01/dplyr-tutorial
R数据科学-2 是用于清洗数据的工具,如dplyr一样,其中每一列都是变量,每一行都是观察值,并且每个单元格都包含一个值。...“ tidyr”包含用于更改数据集的形状(旋转)和层次结构(嵌套和“取消嵌套”),将深度嵌套的列表转换为矩形数据框(“矩形”)以及从字符串列中提取值的工具。...2 12 7 2 2 5 23 3 3 3 3 16 6 ## 1. long...3 宽数据转成长数据,这里使用spread函数,spread函数涉及2个参数 df %>% spread(key, value) image.png 重复列变量 有时候会碰到,需要新增一列是重复该变量的多少次...,如上述例子中, 上海id=1的有2个,然后重复shanghai2次,5次,3次,形成新增一列。
领取专属 10元无门槛券
手把手带您无忧上云