遥测实验的时间序列安排和操作

时间:2016-06-26 15:01:38

标签: r

我正在使用遥测数据集,其中包含日期(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

1 个答案:

答案 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