R语言使用if/ifelse修改dataframe指定条件的列值实现方法
R DataFrame按条件修改指定列值解决方案
问题根因
你之前的代码返回逻辑值的核心原因是混淆了*相等判断运算符==*和赋值逻辑的目标值写法:==是用来判断两个值是否相等的运算符,运行后会返回TRUE/FALSE逻辑值,这就是你出现整列被替换为逻辑值的原因。
可行实现方案
方案1:基础R索引赋值(最简洁,无需额外包)
直接通过逻辑索引定位到需要修改的行,直接赋值即可:
myevents$Epoch[myevents$Item == 1615] <- 261
方案2:正确的ifelse函数写法
ifelse的三个参数依次为:判断条件、条件满足时返回的值、条件不满足时返回的值,正确写法如下:
myevents$Epoch <- ifelse(myevents$Item == 1615, 261, myevents$Epoch)
方案3:tidyverse/dplyr写法
如果你习惯用tidyverse生态的语法,可以用mutate搭配if_else实现:
library(dplyr) myevents <- myevents %>% mutate(Epoch = if_else(Item == 1615, 261, Epoch))
以上三种方法都可以实现需求:仅将Item值为1615的对应Epoch值设为261,其余行的Epoch值保持不变。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

