根据数据框geodf$def
的列geodf
中的条件,其值为0,1:4且没有NA
,我想从中提取时间值列geodf$time
或列geodf$time.stop
。两个时间列的格式均为"%Y%m%d %H%M%S"
。
我尝试使用ifelse
语句链和for
循环来解决问题,但在这两种情况下,我都得到了数字格式的结果(如“1433310096”),我是无法重新转换原始格式"%Y%m%d %H%M%S"
。
这是使用ifelse
语句链的第一次尝试:
geodf$start.stop<-ifelse(geodf$def==1,geodf$time,
ifelse(geodf$def==2,geodf[row(as.matrix(geodf$time))-1],"time"],
ifelse(geodf$def==3,geodf$time.stop,0)))
这里是for循环的第二次尝试
geodf$start.stop<-0
for (i in 1:length(geodf$time)){
if(geodf[i,"def"]==1){
geodf[i,"start.stop"]<-as.Date(geodf[i,"time"], format="%Y%m%d %H%M%S")
} else if (geodf[i,"def"]==2){
geodf[i,"start.stop"]<-as.Date(geodf[i-1,"time"], format="%Y%m%d %H%M%S")
} else if (geodf[i,"def"]==3){
geodf[i,"start.stop"]<-as.Date(geodf[i-1,"time.stop"], format="%Y%m%d %H%M%S")}}
此外,考虑到我的数据集的大小,for循环需要很多时间。
我希望有人可以帮助我。