R - if语句的日期和时间

时间:2015-07-21 14:25:35

标签: r datetime

根据数据框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循环需要很多时间。

我希望有人可以帮助我。

0 个答案:

没有答案