Заменить нулевое значение на 0 в векторе - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь найти нулевые значения в переменной и заменить ее на 0, если условие выполнено.Но этот код, похоже, не работает.

 if(Begin_date <= Date_new & sapply(Var4,is.null)){Var4=0}

Должен ли я использовать цикл for для Var4 и затем заменить его значения?PLease note Var4 имеет 86500 значений и имеет тип "DBL".

       ID  Year Month Begin_date                             Var4 Date_new  
     <dbl> <dbl> <dbl> <dttm>                               <dbl> <date>    
 1      7  2011     1 2008-01-01 00:00:00                        2010-01-01
 2      7  2011     2 2008-01-01 00:00:00                      0 2010-02-01
 3      7  2011     3 2008-01-01 00:00:00                      0 2010-03-01
 4      7  2011     4 2008-01-01 00:00:00                      0 2010-04-01
 5      7  2011     5 2008-01-01 00:00:00                      0 2010-05-01
 6      7  2011     6 2008-01-01 00:00:00                      0 2010-06-01
 7      7  2011     7 2008-01-01 00:00:00                      0 2010-07-01
 8      7  2011     8 2008-01-01 00:00:00                      0 2010-08-01
 9      7  2011     9 2008-01-01 00:00:00                        2010-09-01
10      7  2011    10 2008-01-01 00:00:00                      0 2010-10-01

Я также пробовал это:

if(Begin_date <= Date_new & sapply(Var4,is.null)){
for(i in 1:nrow(Basedata)){Var4[i]<-0}}

Но я получаю эту ошибку:

the condition has length > 1 and only the first element will be used

1 Ответ

0 голосов
/ 19 февраля 2019

С помощью приведенных выше комментариев у меня сработало это решение:

 Data$Var4Copy<-ifelse(Begin_date <= Date_new & is.na(Data$Var4),Data$Var4Copy[is.na(Data$Var4)] <- 0, Data$Var4Copy<- Data$Var4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...