情况:
我有一个很大的数据集,其中有一列用于国家代码(country
),其旁边是一列具有国家名称(country_name
)。我需要帮助,将country
列中两个观察值的NA值替换为相应country_name
列中的NA:
EL应该在country_name列中包含希腊。 英国的country_name列中应包含英国。
我正在整理数据集,因此该解决方案将用于清理整个数据集。显然,我想保留其余的列,因为country
列在country_name
列中具有正确的信息。
可复制的数据:
structure(list(country = c("EL", "EL", "EL", "EL", "EL", "UK",
"UK", "UK", "UK", "UK"), country_name = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), type = c("Conventional thermal",
"Conventional thermal", "Conventional thermal", "Nuclear", "Nuclear",
"Conventional thermal", "Conventional thermal", "Conventional thermal",
"Nuclear", "Nuclear")), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
答案 0 :(得分:2)
对于大型数据集,我建议使用映射文件:
country_map <- tibble(country = c("EL", "UK"),
country_name2 = c("Greece", "United Kingdom"))
映射文件包含所有国家和相应的名称。
然后,您可以将映射文件加入数据中,并使用coalesce
更新国家/地区名称。
data %>% left_join(country_map, by = "country") %>%
mutate(country_name = coalesce(country_name, country_name2)) %>%
select(-country_name2)