大家都知道SPSS软件出来的结果很漂亮,也都知道R语言画图的能力很强,但是大家对表格的输出可能就很少了解了,可能大多数人大都局限于命令行的输出,但是这样太丑了。实际上有个包GT。可以将表格输出的更加漂亮。比如下方的:
实际上,代码很简单,只需要使用gt()函数就行了。
#install.packages("gt")library(gt)library(tidyverse)library(glue)# Define the start and end dates for the data rangestart_date end_date # Create a gt table based on preprocessed# `sp500` table datasp500 %>% dplyr::filter(date >= start_date & date <= end_date) %>% dplyr::select(-adj_close) %>% gt() %>% tab_header( title = "S&P 500", subtitle = glue::glue("{start_date} to {end_date}") ) %>% fmt_date( columns = vars(date), date_style = 3 ) %>% fmt_currency( columns = vars(open, high, low, close), currency = "USD" ) %>% fmt_number( columns = vars(volume), suffixing = TRUE )
上面的12-14行就是对一个数据框进行操作。
上面的15行就是将这个数据框传递给gt,然后gt就可以自动处理这个表格。
上面的16-18行加主标题和副标题,副标题的glue函数就是将变量传递到一个字符串,这个格式和python的f'{var_1}babba{var_2}'很像。
上面的20-23行代码就是说,对date这列(实际上这个时候date已经数据gt函数处理后的对象了)操作,更改他的显示格式。
上面的24-27行就是将open,high,low,close这列的显示格式更改为货币格式,货币为美元。
上面的28-31行就是将volume这列,suffixing这个选项通俗的说,就是13000 -> 1.3w(万)
如果想对某一列字符串进行更加复杂的转换,那根本不需要改变数据框,可以使用text_transform函数,只要在这个函数里面的fn传递给一个函数就可以,像下图的写法:可以看出来给fn这个参数传递了一个很小的函数。
那么问题来了,我觉得还有一个问题就是缺失值怎么办。比如下图有几个缺失值,大部分人都不愿意显示出NA
实际上,这个也是可以改的。可以指定那些列对缺失值显示出你想要文本。
上面的代码就是对1:2列填写missing这个文本,4:7列填写nothing这个文本。效果如下:
如果不想显示任何东西,直接传入一个空的就行,比如代码如下:
可以看得出上面missing_text这个参数只是空格(但是依然要用双引号)。
其实看这个文章的第一个图就知道,这个图没有显示在plot窗口,而是在viewer这个窗口,再看看这个包官方写的教程,你会发现这个东西搞不好又是一个富文本格式,比如html这样的。实际上你只要放大,就可以看出来:
因此这个里面可以写很多html格式的语法。那么下面这样的表R肯定也很容易实现了:
如何保存,很简单:和ggplot2的ggsave一样,只要使用gtsave就行了。
但是gt这个包不是第一个可以显示表格的包,很多包之前都已经有这样的功能。
差点忘记gt的工作流程:
grammar of tables. It aims to do for tables what ggplot2 did for graphics. It’s still early days and tables are surprisingly complicated, but this is a very exciting package by a skilled developer!
https://twitter.com/hadleywickham/status/1247997744469295104
欢迎关注艺术的搬运工