我的数据集包含字段user_country和advertiser_country。 我想创建另一个变量,如果user_country匹配advertiser_country,则表示“local”,如果不是,则表示“not_local”。
最好的方法是什么?
我尝试了类似的东西,但它不起作用:
with(dataset2, dataset2$local_country <- if (identical(user_country,advertiser_country)) "local" else "not_local")
答案 0 :(得分:1)
您可以使用ifelse
范例:
dataset2$local_country = ifelse(dataset2$user_country==dataset2$advertiser_country, "local","not_local")
这将评估由==
调用产生的数组中的每个元素,如果为true,则返回“local”,否则返回“not_local”。 identical
只测试完整的对象,所以除非一切都是本地的,否则它将返回一个“FALSE”。
以下是生成框架的代码:
dataset2 = data.frame("user_country"=sample(letters,100,replace=T),"advertiser_country"=sample(letters[1:10],100,replace=T),stringsAsFactors=F)
dataset2$local_country = with(dataset2,ifelse(user_country==advertiser_country, "local","not_local"))
答案 1 :(得分:0)
您可以使用可能的值创建向量,并使用比较返回的值(+ 1)作为索引。
dataset2 <- transform(dataset2,
local_country = c("not_local",
"local")[(user_country ==
advertiser_country) + 1])
答案 2 :(得分:0)
我使用的解决方案是由同事给我的:
我稍微改变了变量,我决定按照他的建议用TRUE和FALSE值创建is_local
dataset2$user_country <- as.character(dataset2$user_country)
dataset2$advertiser_country <- as.character(dataset2$advertiser_country)
dataset2$is_local <- FALSE
dataset2[dataset2$advertiser_country == dataset2$user_country,]$local <- TRUE