Pivot_longer 和 Pivot 更广泛的语法

Pivot_longer and Pivot wider syntax

我想询问有关为 pivot_longer 创建语法的想法。

我已经尝试在互联网上进行研究,但我似乎找不到任何与我的数据相似的示例,因为它有一个指标列,该列也分为 3 个不同的月份列。

我希望最终输出有七列,包括(地区、月份和五个指标)

如何制定 pivot_longerpivot_wider 语法来清理数据以便可视化?

棘手的部分不在于 pivot_longer。您首先必须清理 Excel 电子表格,即删除空行并合并包含变量名称和日期的两个 header 行。

实现您想要的结果的一种方法可能如下所示:

library(readxl)
library(tidyr)
library(janitor)
library(dplyr)

x <- read_excel("data/Employment.xlsx", skip = 3, col_names = FALSE) %>% 
  # Get rid of empty rows and cols
  janitor::remove_empty()

# Make column names
col_names <- data.frame(t(x[1:2,])) %>% 
  fill(1) %>% 
  unite(name, 1:2, na.rm = TRUE) %>% 
  pull(name)

x <- x[-c(1:2),]
names(x) <- col_names

# Convert to long and values to numerics
x %>% 
  pivot_longer(-Region, names_to = c(".value", "months"), names_sep = "_") %>% 
  separate(months, into = c("month", "year")) %>% 
  mutate(across(!c(Region, month, year), as.numeric))
#> # A tibble: 6 × 8
#>   Region     month year  `Total Population … `Labor Force Part… `Employment Rat…
#>   <chr>      <chr> <chr>               <dbl>              <dbl>            <dbl>
#> 1 Philippin… April 2020f              73722.               55.7             82.4
#> 2 Philippin… Janu… 2021p              74733.               60.5             91.3
#> 3 Philippin… April 2021p              74971.               63.2             91.3
#> 4 National … April 2020f               9944.               54.2             87.7
#> 5 National … Janu… 2021p              10051.               57.2             91.2
#> 6 National … April 2021p              10084.               60.1             85.6
#> # … with 2 more variables: Unemployment Rate <dbl>, Underemployment Rate <dbl>