Translate Column Names back and forth
在处理中文数据中,第一步就是翻译列名到英语。当我们分析完数据后,可能还需要将结果与之前的中文列名对应回去,这样比较麻烦。今天来总结一个小技巧。
# loading package
library(zetaEDA)
# raw data
dat <- tibble(姓名 = c("张三", "李四"), 年龄 = c(20, 30))
# check
dat %>%
print_kbl()
姓名 | 年龄 |
---|---|
张三 | 20 |
李四 | 30 |
首先,建立一个数据集储存中英文对照表。
# build a column name translation data set
column_names_translation <- tibble(
"姓名" = "name",
"年龄" = "age"
) %>%
pivot_longer(1:2, names_to = "chinese", values_to = "english")
# check
column_names_translation %>%
print_kbl()
chinese | english |
---|---|
姓名 | name |
年龄 | age |
接下来就是trick啦:
-
using
deframe()
, make a named vector -
using
rename(!!! your_variable)
# translate to English
tmp <- column_names_translation %>%
select(english, chinese) %>%
deframe()
tmp
## name age
## "姓名" "年龄"
# `!!!` in rename is important
dat %>%
rename(!!!tmp) %>%
print_kbl()
name | age |
---|---|
张三 | 20 |
李四 | 30 |
# translate back to Chinese
tmp2 <- column_names_translation %>%
select(chinese, english) %>%
deframe()
dat %>%
rename(!!!tmp) %>%
rename(!!!tmp2) %>%
print_kbl()
姓名 | 年龄 |
---|---|
张三 | 20 |
李四 | 30 |