数据框中的时间程序的日期存在问题

时间:2018-11-26 13:08:21

标签: r date dataframe time posix

已要求我实习以编写一个函数,该函数运行带有日期和时间的数据框,并返回20h之前的行的某些单元格。 附件是数据框的一部分的图片。 ID是动物的编号,Date是动物的出现时间,Time是动物的出现时间(例如:2代表2小时),Lat和Long是动物的坐标。

enter image description here

然后,该函数将输入(ID,日期和时间)输入并返回动物20小时之前的坐标(数据框的第4列和第5列)。

错误消息总是相同的:

  

print(X)中的错误:找不到对象'X'

似乎IF子句中的条件永远不会重新结合...

这是脚本:

data <- data.frame(GPS_data_for_R) #data contains the excel spreadsheet
data$NewTime <- ymd_h(paste(data$Date,as.character(data$Time))) #a new column is created that merge the Date and the Time columns into a POSIXct format

# This function returns the coordinates of the animal 20h before, depending on the ID, Dtae and Time the user wants
Feeding_coordinates <- function (ID, NewTime){
    for ( i in (1:length(data) ) ) {
      if ( data[i,1] == ID & data[i,6] == as.POSIXct(NewTime,format="%Y-%m-%d %H:%M:%OS", tz="UTC")-72000){ #if the ID of the animal matches the request and if the NewTime - 20h also
        data[i,4] <- X #then X takes the value of the Longitude
        data[i,5] <- Y }# and Y the value of the Lagitude
  }
  print (X)
  print (Y)
}

我真的不知道为什么它不起作用,所以非常感谢您的帮助,我已经花了很多时间了!

谢谢你, 玛侬。

1 个答案:

答案 0 :(得分:0)

由于(尚未)提供(样本)数据,因此很难为您提供帮助。但是,如果数据的结构使得每一行类似于一个小时,并且您想要从20小时之前开始获取该行,则可能要使用dplyr的{​​{1}}。

lag()

这为您提供了带有两个滞后坐标列的整个数据框。您还可以以此构建函数。