我有一个带有年龄变量的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编程的入门者,所以请您帮助哈哈哈 我究竟做错了什么? 预先感谢
答案 0 :(得分:2)
我们可以通过创建逻辑向量来进行分配。 if/else
未向量化,期望输入向量length
1
i1 <- nchar(DO_concatenated$IDADE) == 3)&(funcaoidade(DO_concatenated$IDADE<=3))
DO_concatenated$IDADE[i1] <- 0