这是我的数据:
> head(Kandula_for_n)
date dist date_only
1 2005-05-08 12:00:00 138.5861 2005-05-08
2 2005-05-08 16:00:00 1166.9265 2005-05-08
3 2005-05-08 20:00:00 1270.7149 2005-05-08
6 2005-05-09 08:00:00 233.1971 2005-05-09
7 2005-05-09 12:00:00 1899.9530 2005-05-09
8 2005-05-09 16:00:00 726.8363 2005-05-09
Run Code Online (Sandbox Code Playgroud)
我现在想要一个额外的列,每天有数据条目(dist)的count(n).对于2005-05-08,这将是n = 3,因为在12,16和20时有3个数据条目.我已应用以下代码实际上给了我想要的我想要的代码:
ndist <-tapply(1:NROW(Kandula_for_n), Kandula_for_n$date_only, function(x) length(unique(x)))
Run Code Online (Sandbox Code Playgroud)
之后ndist<-as.data.frame(ndist),我得到了这个:
> head(ndist)
ndist
2005-05-08 3
2005-05-09 4
2005-05-10 6
2005-05-11 4
2005-05-12 6
2005-05-13 6
Run Code Online (Sandbox Code Playgroud)
问题是计数与date_only一起被称为ndist.但是我需要在两个单独的列中使用它们,一个带有count,另一个带有date_only.如何才能做到这一点?我想它相当简单,但我只是不明白.如果你能给我任何想法,我将不胜感激.
谢谢你的努力.
我面临着将数据汇总到日常数据的问题.我有一个数据框,其中删除了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)