根据R中的条件替换值

时间:2020-01-06 19:52:51

标签: r dataframe if-statement replace conditional-statements

我有一个带有年龄变量的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编程的入门者,所以请您帮助哈哈哈 我究竟做错了什么? 预先感谢

1 个答案:

答案 0 :(得分:2)

我们可以通过创建逻辑向量来进行分配。 if/else未向量化,期望输入向量length 1

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