我有一个数据框,其中包含所看到的每日人数组成员的每日计数。我想获得所见小组成员人数的每月平均值(在数据框中显示)。我一直在尝试使用dplyr,因为它比创建新的数据框并使用for循环填充它要简单得多。我对编码非常陌生,希望能够对多个组执行此操作。我的数据框如下所示:
data.frame': 148 obs. of 7 variables:
$ Date : Date, format: "2013-05-01" "2013-05-02" ...
$ Group : chr "WK" "WK" "WK" "WK" ...
$ Session : Factor w/ 12 levels "AM","AM1","AM2",..: 9 1 9 9 1 9 9 1 1 1 ...
$ Group.Members.Seen : num 7 6 8 9 9 6 8 9 4 9 ...
$ Roving.Males : num NA NA NA NA NA NA NA NA NA NA ...
$ Undyed.Group.Members.Seen: num NA NA NA NA NA NA NA NA NA NA ...
$ Non.group.Other : num NA NA NA NA NA NA NA NA NA NA ..
我每天没有观察值,有时一天有多个观察值。在此特定情况下,Group.members.seen列中仅存在数据,但是在其他数据集中,我确实在roving.males,undyed.group.members.seen和non.group.other列中具有数字。
对于这个特定的数据集,我只想使用Date和Group.Members.seen列,因为这些列中只有数据。我已经使用select来选择那些列,然后尝试使用mutate,group_by和总结来获取我想要的东西。但是,我认为问题在于日期。也尝试过聚合,但是我认为那不是最好的。
test <- WK.2013 %>%
select(Date, Group.Members.Seen) %>%
mutate(mo = Date(format="%m"), mean.num.members = mean(Group.Members.Seen)) %>%
group_by(Date(format="%m")) %>%
summarise(mean = mean(Group.Members.Seen))
错误消息说它找不到函数“ Date”,这可能是该代码的一长串问题的开始。
答案 0 :(得分:1)
您可以尝试lubridate
打包并将日期四舍五入为月份或年份或其他单位。
library(lubridate)
mydate <- today()
> floor_date(today(),unit = "month")
[1] "2019-07-01"
> floor_date(mydate,unit = "month")
[1] "2019-07-01"
> round_date(mydate,unit = "month")
[1] "2019-08-01"
答案 1 :(得分:0)
很难确定这是否可以在不查看实际数据的情况下起作用,但是您可以尝试使用apply.monthly
软件包中的xts
函数吗?