看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用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,分組處理 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.53.249 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1516186586.A.1DC.html ※ 編輯: giock18 (60.250.53.249), 01/17/2018 18:58:27
andrew43: 針對NA去取同id之內last或first就可以了吧。 01/17 20:39