在if语句中使用R匹配来查找和替换值的警告

时间:2014-05-21 23:14:06

标签: r if-statement warnings match

我是R.的新手。我正在尝试编写一个if语句,根据这些数据帧中两个其他变量之间的匹配,用另一个数据帧中的值替换数据帧中的不常见值。我的代码是这样的:

if(myData$Region == 'Head Office'){
myData$Region <- LocationData$Region[match(myData$Township,LocationData$Township)]
}

R返回: Warning message: In if (myData$Region == "Head Office") { : the condition has length > 1 and only the first element will be used

我希望这意味着代码可以工作,但仅适用于第一行数据。根据其他SO问题,我试过

ifelse(myData$Region == 'Head Office'){
myData$Region <- LocationData$Region[match(myData$Township,LocationData$Township)],
}

但它会返回多个错误。

我的问题:if声明是否可能用于此目的?我是否只需要找出正确的语法来使其在myData中的所有行中运行,或者这是完全错误的方法?

2 个答案:

答案 0 :(得分:1)

ifelse上的语法不正确,并且缺少“else”值

?ifelse

假设你的“else”值是myData $ Region,

myData$Region <- ifelse(myData$Region == 'Head Office',
       LocationData$Region[match(myData$Township,LocationData$Township)],
       myData$Region)

答案 1 :(得分:0)

对于有此问题的其他人... ifelse代码在@luis_js修正语法后运行,但它没有返回我需要的结果:有条件地替换mydata $ Region的值,使用来自LocationData $ Region的值,基于Township的匹配,在两个数据框中找到一列。

我尝试了这里建议的“更像R”解决方案:https://stackoverflow.com/questions/18921344/if-statement-to-replace-nas-in-a-column-matching-with-a-different-column-from-an?rq=1 - 它完美无缺。

对于我的数据,执行条件替换的代码是

headoffice <- myData$Region == 'Head Office'
myData$Region[headoffice] <- LocationData$Region[match(myData$Township[headoffice],LocationData$Township)]