R中的数据聚合循环

Jan*_*nke 1 aggregate r dataframe

我面临着将数据汇总到日常数据的问题.我有一个数据框,其中删除了NA(下面给出了数据图片的链接).数据每天收集3次,但有时由于NAs,每天只有1或2个条目; 有些日子数据完全丢失了.

我现在有兴趣计算"dist"的每日平均值:这意味着总结一天的"dist"数据并将其除以每天的条目数(如果当天没有数据丢失则为3).我想通过一个循环来做到这一点.我怎么能用循环来做这个?问题是,有时我每天有3个条目,有时只有2个甚至1个.我想告诉R 每天,它应该总结"dist"并将其除以每个可用的条目数天.

我根本不知道如何为此目的制定for循环.如果你能就这个问题给我任何建议,我将不胜感激.感谢您的努力和亲切的问候,

一月

数据框:http://www.pic-upload.de/view-11435581/Data_loop.jpg.html

编辑:我按照建议使用了aggregate和tapply,但是,数据的平均值并没有真正计算:

              Group.1         x
1  2006-10-06 12:00:00  636.5395
2  2006-10-06 20:00:00  859.0109
3  2006-10-07 04:00:00  301.8548
4  2006-10-07 12:00:00  649.3357
5  2006-10-07 20:00:00  944.8272
6  2006-10-08 04:00:00  136.7393
7  2006-10-08 12:00:00  360.9560
8  2006-10-08 20:00:00       NaN
Run Code Online (Sandbox Code Playgroud)

使用的代码是:

dates<-Dis_sub$date
distance<-Dis_sub$dist
aggregate(distance,list(dates),mean,na.rm=TRUE)
tapply(distance,dates,mean,na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

Jor*_*eys 6

不要使用循环.使用R.一些示例数据:

dates <- rep(seq(as.Date("2001-01-05"),
                 as.Date("2001-01-20"),
                 by="day"),
             each=3)
values <- rep(1:16,each=3)
values[c(4,5,6,10,14,15,30)] <- NA
Run Code Online (Sandbox Code Playgroud)

和任何:

aggregate(values,list(dates),mean,na.rm=TRUE)

tapply(values,dates,mean,na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

给你你想要的.另见?aggregate?tapply.

如果你想要一个数据帧,你可以查看包plyr:

Data <- as.data.frame(dates,values)
require(plyr)

ddply(data,"dates",mean,na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

请记住,ddply尚未完全支持日期格式(尚未).