r-用名称替换区域编号


regions_numbers <- c(2,9,21,142,150,419)
regions_names <- c("Oceania", "Africa", "North America", "Asia", "Europe", "Latin America")

我需要将数字替换为相应的地区名称,但我不确定使用的代码

我相信有很多方法,但我会不由自主地使用数据帧。通过这种方式,我们可以在excel中执行类似left_join的映射(类似于vlookup(。

我们首先创建一个映射数据帧:

df_region = data.frame(regions_numbers = c(2,9,21,142,150,419),
regions_names = c("Oceania", "Africa", "North America", "Asia", "Europe", "Latin America"))

现在,我们可以通过将任何未来矢量转换为数据帧来进行映射:

new_region_numbers = data.frame(regions_numbers  = sample(c(2,9,21,142,150,419),10,replace = TRUE))

sample只是给了我一组随机的region_numbers。现在,通过使用left_join,我们可以轻松获得您想要的映射:

new_region_names =new_region_numbers %>% 
left_join(df_region, by = c("regions_numbers" = "regions_numbers"))

输出:

regions_numbers regions_names
1              142          Asia
2              142          Asia
3              150        Europe
4                9        Africa
5              150        Europe
6              150        Europe
7               21 North America
8               21 North America
9              419 Latin America
10             150        Europe

如果您想要矢量,那么您可以通过说:来选择它

new_names_only = new_region_names$regions_names 

这是一种方法。我相信有更多的"内置"功能可以进行这种映射。但现在想不出什么了。

另一种简单的方式,整洁的方式。。。

sample_vec <- sample(regions_numbers, 20, replace = TRUE)
recode(sample_vec, "2" = "Oceania", "9" = "Africa", "21" = "North America",
"142" = "Asia", "150" = "Europe", "419" = "Latin America")

有用的链接。

最新更新