数据清洗懒人工具:janitor

R语言
数据清洗
作者

不止BI

发布于

2024年4月4日

janitor 是 R 语言中一个用于数据清理和格式化的实用包。它提供了一系列函数,可以帮助您轻松完成数据清洗过程中一些讨厌的步骤,比如:清理数据框列名、格式化数字和日期、创建和格式化频率表等

清理列名称

基本大小写:

  • snake_case: 所有小写字母,用下划线分隔,示例:my_variable, data_frame

  • small_camel: 首字母小写,后续单词首字母大写,示例:myVariable, dataFrame

  • big_camel: 每个单词的首字母都大写,示例:MyVariable, DataFrame

  • screaming_snake: 所有大写字母,用下划线分隔,示例:MY_VARIABLE, DATA_FRAME

混合大小写:

  • parsed: 大小写取决于上下文或使用的解析器。

  • mixed: 包含不同大小写约定的组合,示例:thisIsAMixedCaseString

  • lower_upper: 首字母小写,然后每个后续单词的首字母大写,示例:thisIsALowerUpperString

  • upper_lower: 首字母大写,然后每个后续单词的小写,示例:ThisIsAnUpperLowerString

其他:

  • swap: 交换每个字母的大小写(小写变大写,反之亦然)。

  • all_caps: 所有大写字母。

  • lower_camel: 首字母小写,后续单词首字母大写。

  • upper_camel: 每个单词的首字母大写。

  • internal_parsing: 大小写取决于内部规则或约定。

  • none: 不应用特定的大小写。

  • flip: 翻转每个字母的大小写(大写变小写,反之亦然)。

  • sentence: 将第一个单词和所有专有名词的首字母大写,其余字母小写。

  • random: 随机分配每个字母的大小写(大写或小写)。

  • title: 将每个单词的首字母大写,其余字母小写。

代码
library(janitor)
test_df <- as.data.frame(matrix(ncol = 6))
names(test_df) <- c(
  "firstName", "ábc@!*", "% successful (2009)",
  "REPEAT VALUE", "REPEAT VALUE", ""
)
test_df %>%
  clean_names()
  first_name abc percent_successful_2009 repeat_value repeat_value_2  x
1         NA  NA                      NA           NA             NA NA
代码
test_df %>%
  clean_names(case = "small_camel")
  firstName abc percentSuccessful2009 repeatValue repeatValue_2  x
1        NA  NA                    NA          NA            NA NA
代码
test_df %>%
  clean_names(case = "big_camel")
  FirstName Abc PercentSuccessful2009 RepeatValue RepeatValue_2  X
1        NA  NA                    NA          NA            NA NA

日期时间处理

excel数字转为日期时间

代码
excel_numeric_to_date(41103)
[1] "2012-07-13"

include_time 控制是否小数转为时间

代码
excel_numeric_to_date(41103.01)
[1] "2012-07-13"
代码
excel_numeric_to_date(41103.01, include_time = TRUE)
[1] "2012-07-13 00:14:24 CST"

快速统计

tabyl 可以直接统计数量及占比

代码
library(dplyr)
starwars %>% tabyl(eye_color)
     eye_color  n    percent
         black 10 0.11494253
          blue 19 0.21839080
     blue-gray  1 0.01149425
         brown 21 0.24137931
          dark  1 0.01149425
          gold  1 0.01149425
 green, yellow  1 0.01149425
         hazel  3 0.03448276
        orange  8 0.09195402
          pink  1 0.01149425
           red  5 0.05747126
     red, blue  1 0.01149425
       unknown  3 0.03448276
         white  1 0.01149425
        yellow 11 0.12643678
代码
starwars %>%
  tabyl(eye_color) %>%
  adorn_totals("row", name = "总计") %>%
  adorn_pct_formatting()
     eye_color  n percent
         black 10   11.5%
          blue 19   21.8%
     blue-gray  1    1.1%
         brown 21   24.1%
          dark  1    1.1%
          gold  1    1.1%
 green, yellow  1    1.1%
         hazel  3    3.4%
        orange  8    9.2%
          pink  1    1.1%
           red  5    5.7%
     red, blue  1    1.1%
       unknown  3    3.4%
         white  1    1.1%
        yellow 11   12.6%
          总计 87  100.0%
回到顶部