我想为我的数据库创建一个分类变量:我想创建一个“ Same_Region”组,其中包括在同一地区生活和工作的所有人员,为那些不住在同一地区的人提供一个“ Diff_Region”。我尝试使用IF语句,但实际上我不知道该如何正确地说“如果可变的居住区和工作区相同,则返回...”。这是我第一次尝试用自我R逼近,我感到有点失落。
我试图将两个变量(由2个字母组成-f.i.“ BO”)作为字符,并使用“ grep”命令。但这最终没有结果。然后,我尝试将两个变量都作为因子,但没有太大变化。
----在R -----
extractSamepr <- function(RegionOfRes, RegionOfWo){
if(RegionOfRes== RegionOfWo){
return("SamePr")
}
else {
return("DiffPr")
}
SamePr <- NULL
for (i in 1:nrow(Data.Base)) {
SamePr <- c(SamePr, extractSamepr(Data.Base[i, "RegionOfRes", "RegionOfWo"]))
}
@ deepseefan的ifelse
中提出的comment方法是解决此类问题的标准方法。这是另一个。它利用以下事实:将FALSE/TRUE
编码为整数0/1
以基于相等性创建逻辑矢量,然后将1
添加到该矢量中,从而得到1/2
值的矢量。该结果在函数的最终指令中用于索引具有两个可能结果的向量。
extractSamepr <- function(DF){
i <- 1 + (DF[["RegionOfRes"]] == DF[["RegionOfWo"]])
c("DiffPr", "SamePr")[i]
}
Data.Base$SamePr <- extractSamepr(Data.Base)