我正在尝试在变量中查找空值,并在满足条件的情况下将其替换为0。但是此代码似乎不起作用。
if(Begin_date <= Date_new & sapply(Var4,is.null)){Var4=0}
我应该对Var4使用for循环,然后替换其值吗?请注意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
答案 0 :(得分:0)
在以上评论的帮助下,该解决方案对我有效:
Data$Var4Copy<-ifelse(Begin_date <= Date_new & is.na(Data$Var4),Data$Var4Copy[is.na(Data$Var4)] <- 0, Data$Var4Copy<- Data$Var4)