我是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
中的所有行中运行,或者这是完全错误的方法?
答案 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)]