[問題] 移動平均的開頭和結尾處理

作者: 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