[问题] 移动平均的开头和结尾处理

楼主: giock18 (小武)   2018-01-17 18:56:24
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
使用者
[问题叙述]:
遇到一个问题卡关想请教版上大大
我有一笔资料,必须依ID分组处理
在每组当中,针对每小时的资料,必须往前、往后做移动平均
范例:
Test<-data.frame(hrs=seq(from=0,to=23),TaxiTime=runif(24,min=15,max=25))
Test$ID<-'a'
Test2<-Test
Test2$ID<-'b'
Test <- rbind(Test,Test2)
df1 <- group_by(Test,ID) %>%
mutate(TaxiTime2 = lead(TaxiTime, 1), TaxiTime3 = lag(TaxiTime, 1)) %>%
filter(!is.na(TaxiTime) | !is.na(TaxiTime2) | !is.na(TaxiTime3))
%>%data.frame()
print(df1)
#在这里可以看出,这个做法还没考虑到,遇到00点和23点的时候的问题
df2 <-mutate(df1, TaxiTime.Mean = rowMeans(select(df1,
starts_with("TaxiTime")), na.rm = TRUE))
但遇到一个问题是,如果是分组的第一列资料(00点的时候),该如何让他去取23点的资料
去补TaxiTime2 的空值。
同理,遇到最后一列资料(23点的时候)该如何让他去取00点的资料补值。
这样的功能有点像移动平均的头尾问题,所以我问题这样取名,
如果有更好的问题命名建议我可以修正!!拜托大大了!
[关键字]:
moving average,分组处理
作者: andrew43 (讨厌有好心推文后删文者)   2018-01-17 20:39:00
针对NA去取同id之内last或first就可以了吧。

Links booklink

Contact Us: admin [ a t ] ucptt.com