我正在使用遥测数据集,其中包含日期(9天不同)和时间。 Id_tag是每个人的ID。在每一行中,我都有一个人的信息(日期时间)和检测到它的距离
head(Nest5)
id_tag data_time distance
1 26 03/05/2016 21:35 28.9724
2 26 03/05/2016 04:39 29.6023
3 26 03/05/2016 03:58 28.9724
4 30 03/05/2016 22:14 12.5950
5 30 03/05/2016 20:09 11.9651
6 30 03/05/2016 20:12 12.5950
levels(id_tag)
[1] "5" "15" "20" "26" "30" "42" "44" "45" "46" "47" "54" "58" "59" "60" "61" "62" "63" "65" "66" "67"
[21] "70" "73" "82" "86"
rdate<- as.Date(Nest5$date,"%d%m%y")
#Generate a xts
Da_w= xts(Nest5,order.by = as.POSIXct(Nest5$data_time,format="%d%m%y %H:%M"))
我想重新安排数据,而不是每分钟;我希望使用距离的平均值在几个小时内得到它。另外,我想创建一个额外的列,其中包含在一小时内注册每个标记的次数
我尝试过使用xts函数和POXixct。但是,我不能处理我的id_character,我应该对每个id做一个子集然后使用xts函数吗?或者它是更好的方法吗?
任何人都将不胜感激;我已经编码了四天试图解决这个问题! =)=)=)
非常感谢,
Best,Mara
答案 0 :(得分:0)
我相信这就是你要找的东西:
library(dplyr)
library(lubridate)
exp$data_time <- dmy_hm(exp$data_time)
exp$date <- format(as.POSIXct(exp$data_time,format='%m/%d/%Y'),format='%m/%d/%Y') %>% dmy()
df <- exp %>% mutate(hour = hour(data_time)) %>%
group_by(id_tag, date, hour) %>%
summarise(dist_mean = mean(distance),
count = n())
结果是:
df
id_tag date hour dist_mean count
(int) (time) (int) (dbl) (int)
1 26 2016-03-05 3 28.97240 1
2 26 2016-03-05 4 29.60230 1
3 26 2016-03-05 21 28.97240 1
4 30 2016-03-05 20 12.28005 2
5 30 2016-03-05 22 12.59500 1