首页 > 解决方案 > 根据 R 中的条件替换值

问题描述

我有一个带有一些年龄变量的df,我想对其进行修改。

    DEATH       CITY    BIRTH    AGE      SEX
> 1 5092017     Acre    3031997   20    MASCULINO
> 2 11022017    Acre    9022017   202   MASCULINO
> 3 11022017    Acre    13071933  83    FEMININO
> 4 11022017    Acre    6022002   15    MASCULINO
> 5 11022017    Acre    2061966   50    FEMININO
> 6 11022017    Acre    28121946  70    FEMININO
> 7 10022017    Acre    4121955   61    MASCULINO
> 8 10022017    Acre    3101943   73    FEMININO
> 9 10022017    Acre    6022017   20    MASCULINO
> 10 9022017    Acre    14012017  226   FEMININO
> 11 9022017    Acre    20071931  85    FEMININO

这些带有 3 个字符的行代表生命的月 (3)、天 (2) 和小时 (1),我想将其值更改为 0,因为它们还没有完成 1 岁。

我尝试使用 if 条件,但它不起作用......

if((nchar(DO_concatenated$IDADE) == 3)&(funcaoidade(DO_concatenated$IDADE) <=3)){
  DO_concatenated$IDADE <- 0))
  }

“funcaoidade”它是我创建的一个函数,它只查看这些数字的第一个字符

 funcaoidade = function(x){
  substr(x, start = 1, stop = 1)
}

由于我是 R 编程的初学者,我请求您的帮助哈哈哈我做错了什么?提前致谢

标签: rdataframeif-statementreplaceconditional-statements

解决方案


我们可以通过创建一个逻辑向量来进行赋值。未if/else向量化,它期望输入向量为length1

i1 <- nchar(DO_concatenated$IDADE) == 3)&(funcaoidade(DO_concatenated$IDADE<=3))
DO_concatenated$IDADE[i1] <- 0

推荐阅读