已要求我实习以编写一个函数,该函数运行带有日期和时间的数据框,并返回20h之前的行的某些单元格。 附件是数据框的一部分的图片。 ID是动物的编号,Date是动物的出现时间,Time是动物的出现时间(例如:2代表2小时),Lat和Long是动物的坐标。
然后,该函数将输入(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)
}
我真的不知道为什么它不起作用,所以非常感谢您的帮助,我已经花了很多时间了!
谢谢你, 玛侬。
答案 0 :(得分:0)
由于(尚未)提供(样本)数据,因此很难为您提供帮助。但是,如果数据的结构使得每一行类似于一个小时,并且您想要从20小时之前开始获取该行,则可能要使用dplyr
的{{1}}。
lag()
这为您提供了带有两个滞后坐标列的整个数据框。您还可以以此构建函数。