Pivot_longer 和 Pivot 更广泛的语法
Pivot_longer and Pivot wider syntax
我想询问有关为 pivot_longer
创建语法的想法。
我已经尝试在互联网上进行研究,但我似乎找不到任何与我的数据相似的示例,因为它有一个指标列,该列也分为 3 个不同的月份列。
我希望最终输出有七列,包括(地区、月份和五个指标)
如何制定 pivot_longer
和 pivot_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>
我想询问有关为 pivot_longer
创建语法的想法。
我已经尝试在互联网上进行研究,但我似乎找不到任何与我的数据相似的示例,因为它有一个指标列,该列也分为 3 个不同的月份列。
我希望最终输出有七列,包括(地区、月份和五个指标)
如何制定 pivot_longer
和 pivot_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>