我有一个名为data1
的数据集,由列中的214个国家和地区组成。我想删除不属于非洲的国家/地区的所有行。
我知道我可以应用以下代码删除特定行:
data1clean <- data1[!grepl("Albania",data1$Country.Name),]
data2clean <- data1clean[!grepl("Andorra",data1$Country.Name),]
data3clean <- data2clean[!grepl("France",data1$Country.Name),]
...
事实是我不想写这个命令超过100次。我在考虑循环可能但是我的工作不正常:
x <- data1clean
i <- Country.Names$data1
if(i=c("Albania","Andorra","France"){
print(x <- data1[!grepl(i,data1$Country.Name),] )
}
答案 0 :(得分:3)
可能最好的方法是建立非洲国家名单和使用%in%
:
# vector of african countries
africanCountries <- c("Algeria", "Angola", ..., "Zambia", "Zimbabwe")
# subset using %in%
myData <- data1[data1$country %in% africanCountries, ]
如果您担心大写/小写,可以使用toupper
或tolower
函数让矢量达成一致。
答案 1 :(得分:2)
我们可以使用data.table
library(data.table)
africanCountries <- c("Algeria", "Angola", ..., "Zambia", "Zimbabwe")
dt1 <- setDT(data1, key = "country")[(africanCountries)]