重命名列数据
Rename Column Data
我想重命名一栏中的观察列表。 dataframe
如下所示。 GEO 列有 40 个不同的名称,我想重命名。我创建了另一个列表,其中包含 40 个我想使用的替代名称。虽然我有成千上万的观察结果,但我只有 40 个不同的名字。
**Code to Reproduce**
library(cansim)
library(dplyr)
HPI_LIST <- c("v111955442", "v111955445", "v111955448", "v111955451", "v111955454", "v111955457", "v111955460", "v111955463", "v111955466", "v111955469", "v111955472", "v111955475", "v111955478", "v111955481", "v111955484", "v111955487", "v111955490", "v111955493", "v111955496", "v111955499", "v111955502", "v111955505", "v111955508", "v111955511", "v111955514", "v111955517", "v111955520", "v111955523", "v111955526", "v111955529", "v111955532", "v111955535", "v111955538", "v111955541", "v111955544", "v111955547", "v111955550", "v111955553", "v111955556", "v111955559")
NewHPIData <- get_cansim("18-10-0205-01")
NewHPI <- NewHPIData %>% filter(VECTOR %in% HPI_LIST, REF_DATE > 2018) %>%
arrange((COORDINATE)) %>%
select(REF_DATE, GEO, VALUE) %>% mutate(VALUE = VALUE / 100) %>%
arrange(GEO)
我想更新 GEO 中的名称,例如我想将艾伯塔重命名为 "New Housing Price Index - AB (x 100)"
将您的名称映射定义为列表
nameMap <- list( "Alberta" = "New Housing Price Index - AB (x 100)",
"Atlantic Region" = "New Name 1",
"British Columbia" = "New Name 2"
## and so on )
然后使用 mutate_at
:
在 GEO
列上调用 recode
NewHPI %>% mutate_at( "GEO", recode, !!!nameMap )
# # A tibble: 320 x 3
# REF_DATE GEO VALUE
# <chr> <chr> <dbl>
# 1 2018-01 New Housing Price Index - AB (x 100) 1.00
# 2 2018-02 New Housing Price Index - AB (x 100) 0.998
# 3 2018-03 New Housing Price Index - AB (x 100) 0.996
# 4 2018-04 New Housing Price Index - AB (x 100) 0.996
# 5 2018-05 New Housing Price Index - AB (x 100) 0.996
# 6 2018-06 New Housing Price Index - AB (x 100) 0.998
# 7 2018-07 New Housing Price Index - AB (x 100) 0.999
# 8 2018-08 New Housing Price Index - AB (x 100) 0.994
# 9 2018-01 New Name 1 1.00
# 10 2018-02 New Name 1 1.00
需要 !!!
运算符,因为 recode
使用 ...
接受任意数量的参数,但您有一个预定义的列表。这种机制被称为 unquote-splicing.
我想重命名一栏中的观察列表。 dataframe
如下所示。 GEO 列有 40 个不同的名称,我想重命名。我创建了另一个列表,其中包含 40 个我想使用的替代名称。虽然我有成千上万的观察结果,但我只有 40 个不同的名字。
**Code to Reproduce**
library(cansim)
library(dplyr)
HPI_LIST <- c("v111955442", "v111955445", "v111955448", "v111955451", "v111955454", "v111955457", "v111955460", "v111955463", "v111955466", "v111955469", "v111955472", "v111955475", "v111955478", "v111955481", "v111955484", "v111955487", "v111955490", "v111955493", "v111955496", "v111955499", "v111955502", "v111955505", "v111955508", "v111955511", "v111955514", "v111955517", "v111955520", "v111955523", "v111955526", "v111955529", "v111955532", "v111955535", "v111955538", "v111955541", "v111955544", "v111955547", "v111955550", "v111955553", "v111955556", "v111955559")
NewHPIData <- get_cansim("18-10-0205-01")
NewHPI <- NewHPIData %>% filter(VECTOR %in% HPI_LIST, REF_DATE > 2018) %>%
arrange((COORDINATE)) %>%
select(REF_DATE, GEO, VALUE) %>% mutate(VALUE = VALUE / 100) %>%
arrange(GEO)
我想更新 GEO 中的名称,例如我想将艾伯塔重命名为 "New Housing Price Index - AB (x 100)"
将您的名称映射定义为列表
nameMap <- list( "Alberta" = "New Housing Price Index - AB (x 100)",
"Atlantic Region" = "New Name 1",
"British Columbia" = "New Name 2"
## and so on )
然后使用 mutate_at
:
GEO
列上调用 recode
NewHPI %>% mutate_at( "GEO", recode, !!!nameMap )
# # A tibble: 320 x 3
# REF_DATE GEO VALUE
# <chr> <chr> <dbl>
# 1 2018-01 New Housing Price Index - AB (x 100) 1.00
# 2 2018-02 New Housing Price Index - AB (x 100) 0.998
# 3 2018-03 New Housing Price Index - AB (x 100) 0.996
# 4 2018-04 New Housing Price Index - AB (x 100) 0.996
# 5 2018-05 New Housing Price Index - AB (x 100) 0.996
# 6 2018-06 New Housing Price Index - AB (x 100) 0.998
# 7 2018-07 New Housing Price Index - AB (x 100) 0.999
# 8 2018-08 New Housing Price Index - AB (x 100) 0.994
# 9 2018-01 New Name 1 1.00
# 10 2018-02 New Name 1 1.00
需要 !!!
运算符,因为 recode
使用 ...
接受任意数量的参数,但您有一个预定义的列表。这种机制被称为 unquote-splicing.