作者giock18 (小武)
看板R_Language
标题[问题] 移动平均的开头和结尾处理
时间Wed Jan 17 18:56:24 2018
[问题类型]:
程式谘询(我想用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://webptt.com/cn.aspx?n=bbs/R_Language/M.1516186586.A.1DC.html
※ 编辑: giock18 (60.250.53.249), 01/17/2018 18:58:27
1F:→ andrew43: 针对NA去取同id之内last或first就可以了吧。 01/17 20:39