第36期 R语言!整洁数据全流程常用包介绍和汇总

之前的第30期介绍R语言的整洁数据规范。接下来我我们学习一下通过哪些包可以获得整洁数据

本期介绍了R语言包括数据导入-数据整理-数据可视化全流程的常用包及具体实例

大多不需要,我建议用bruceR的import()一步到胃

数据导入

我们可以通过多种不同的方式来存储您要使用的数据。有时信息存储在 Excel 电子表格中。其他时候,数据位于需要抓取的网站上的表格中。或者,在 CSV 文件中。每种类型的数据文件都有自己的结构,但 R 可以处理所有这些类型。然而,要做到这一点,需要熟悉一些不同的软件包。

  • readr: 用于快速高效地读取CSV和类似的分隔文本文件。示例:读取CSV文件。

    library(readr)
    data <- read_csv("example.csv")
    
  • googlesheets4: 专门用于从Google Sheets中导入数据。示例:读取Google Sheets中的数据。

    library(googlesheets4)
    sheet <- read_sheet("https://docs.google.com/spreadsheets/d/1d...")
    
  • readxl: 专门用于从Excel文件中读取数据,无需安装Microsoft Excel。示例:读取Excel文件。

    library(readxl)
    data <- read_excel("example.xlsx")
    
  • googledrive: 用于访问和管理Google Drive上的文件。示例:列出Google Drive中的文件。

    library(googledrive)
    drive_ls()
    
  • haven: 用于读取SPSS、Stata和SAS文件,使得这些统计软件的数据格式易于在R中使用。示例:读取SPSS文件。

    library(haven)
    data <- read_spss("example.sav")
    
  • jsonlite & xml2: 分别用于处理JSON和XML格式的数据,这两种格式常用于网络数据交换。示例:解析JSON数据。

    library(jsonlite)
    json_data <- fromJSON('{"name":"John", "age":30, "city":"New York"}')
    
  • rvest: 用于从网页上抓取数据,非常适合进行网页内容的数据挖掘。示例:从网页中提取数据。

    library(rvest)
    webpage <- read_html("http://example.com")
    titles <- html_nodes(webpage, "h1") %>% html_text()
    
  • httr: 专门用于与网络API进行交互,特别是处理JSON数据时。示例:发送GET请求到API。

每个包的功能都专注于处理特定类型的数据源或数据格式,为数据科学和统计分析提供了极大的便利。

数据整理

数据整理是将杂乱无章的数据转换成一种格式,使之更加有序和易于分析。Tidyverse 提供了一系列的包来帮助完成这一任务:

  • dplyr: 这个包提供了一套一致的动词(如变异(mutate)、选择(select)、过滤(filter)、总结(summarise)和排列(arrange)),以帮助处理数据。例如,使用 filter() 从数据框中选择满足特定条件的行:

    library(dplyr)
    filtered_data <- your_data_frame %>% filter(your_condition)
    
  • tidyr: 主要用于将杂乱的数据整理为整洁的格式,其中每个变量是一列,每个观测是一行。例如,使用 gather() 函数将宽格式数据转换为长格式数据:

    library(tidyr)
    long_data <- wide_data %>% gather(key, value, -columns_to_exclude)
    
  • janitor: 这个包简化了清洁和管理数据的过程。例如,使用 clean_names() 将所有列名转换为小写并替换空格为下划线:

    library(janitor)
    clean_data <- your_data_frame %>% clean_names()
    
  • forcats: 主要用于简化R中因子类型数据的处理。例如,使用 fct_reorder() 根据另一列的值重新排序因子水平:

    library(forcats)
    reordered_data <- your_data_frame %>% mutate(your_factor = fct_reorder(your_factor, another_column))
    
  • stringr: 用于简化字符串处理,特别是与正则表达式结合使用。例如,使用 str_replace() 替换字符串中的模式:

    library(stringr)
    modified_data <- your_data_frame %>% mutate(your_column = str_replace(your_column, pattern, replacement))
    
  • lubridate: 使日期和时间的处理变得简单。例如,使用 ymd() 将年月日格式的字符串转换为日期对象:

    library(lubridate)
    date_data <- your_data_frame %>% mutate(date_column = ymd(date_column))
    
  • glue: 用于更简单地处理带解释的字符串字面量。例如,用 glue() 动态构建字符串:

    library(glue)
    text <- glue("Today is {Sys.Date()}")
    
  • skimr: 在数据整理完成后,用于快速汇总和查看数据框的结构。例如,使用 skim() 查看数据概况:

    library(skimr)
    skim(your_data_frame)
    
  • tidytext: 用于文本数据的分析和处理。例如,使用 unnest_tokens() 将文本列拆分为单词:

    library(tidytext)
    tidy_text <- your_data_frame %>% unnest_tokens(word, text_column)
    
  • purrr: 增强R的函数式编程能力,特别是用于处理向量和函数。例如,使用 map() 替代传统的for循环:

数据可视化

数据可视化是理解数据的重要步骤,Tidyverse 提供了多个包来帮助创建可视化:

  • ggplot2: 允许创建并定制各种图表。例如,使用 ggplot() 绘制散点图:

    library(ggplot2)
    ggplot(your_data_frame, aes(x = x_variable, y = y_variable)) + geom_point()
    
  • kableExtra: 用于创建复杂和定制化的表格。例如,使用 kable() 生成一个基本表格,然后用 kableExtra 进行美化:

    library(kableExtra)
    kable(your_data_frame) %>% kable_styling()
    
  • ggrepel: 用于在 ggplot2 图表中添加避免重叠的文本标签。例如,使用 geom_text_repel() 在散点图中添加文本标签:

    library(ggrepel)
    ggplot(your_data_frame, aes(x = x_variable, y = y_variable)) + geom_point() + geom_text_repel(aes(label = label_column))
    
  • cowplotpatchwork: 分别用于改善和组合 ggplot2 图表。例如,使用 plot_grid() 将多个图组合在一起:

    library(cowplot)
    plot_grid(plot1, plot2, labels = "AUTO")
    
  • gganimate: 为 ggplot2 图表添加动画效果。例如,创建一个随时间变化的动态图表:

这些包提供了一系列强大的工具来处理和可视化数据,从而使数据分析更加高效和直观。

其它

内容来源:

电子书资源获取,公众号回复“231213

[1]Wright C, Ellis S, Hicks S, et al. Tidyverse Skills for Data Science in R[J].