【发布时间】:2020-04-11 09:41:46
【问题描述】:
我有一个data.table,带有国家代码和相应的国家名称。在某些情况下,国家/地区未知,"OTHER" 用于指示未知代码。我的数据不一致,因为对于某些code,我有country 名称,但也有"OTHER", 的一行,例如IRLAND 或LUXEMBURG。
code <- c(104, 105, 105, 106, 109, 112, 115, 115)
country <- c("GERMANY", "IRLAND", "OTHER", "FRANCE", "FRANCE", "ITALY", "OTHER", "LUXEMBURG")
id_country <- cbind(code, country)
id_country <- as.data.table(id_country)
我想做的事:我想获得唯一的code - 对于每个代码,只有一行,最好是国家名称,如果不可用,则使用“其他”。我正在寻找最简单的解决方案。
现在我想首先检查我的data.table 是否有一些不一致的地方。如果是,则删除 country 列中同时具有 - 国家名称和“其他”的所有行。我尝试了以下方法,但没有一个 duplicates 被删除
if (length(unique(id_country$code)) != length(unique(id_country))){
# replace "OTHER" with the corresponding country name
duplicates <- id_country[duplicated(code),]
id_country <- id_country[!(id_country$code %in% duplicates & id_country$country == "OTHER"),]
}
想要的输出:
code <- c(104, 105, 106, 109, 112, 115)
country <- c("GERMANY", "IRLAND", "FRANCE", "FRANCE", "ITALY", "LUXEMBURG")
id_country <- cbind(code, country)
id_country <- as.data.table(id_country)
【问题讨论】:
-
当 2 个代码(例如 106 和 109)的名称为 country, France 时会发生什么?
标签: r data.table