[英]Moving Averages in Data frame by factor variable with non-leading NA's and entire factor levels as NA's in R
對於如何通過因子變量計算數據幀中的移動平均值,我還沒有找到令人滿意的答案。 另外,我有一個問題,就是整個因素水平都是不適用(沒有一個國家或個人的數據)和不領先的不適用的情況(缺少最后的觀察)。
考慮:
value <- c(rep(NA,4),1,2,3,NA,5:8)
factor <- c(rep("a",4), rep("b",4),rep("c",4))
Data <- as.data.frame(cbind(value,factor))
我想對3個觀察值進行(右對齊)移動平均。 對不起這些軟件包,但是在我看來,這應該與ddply函數一起使用,如下所示:
library(TTR) # for moving averages
library(plyr) # for ddply
Data <- ddply(Data,"factor",MAvalue = SMA(value, n=3))
結果應如下所示:
value factor MAvalue
NA a NA
NA a NA
NA a NA
NA a NA # this factor has no data
1 b NA
2 b NA
3 b 2
NA b NA # this factor is missing the last observation
5 c NA
6 c NA
7 c 6
8 c 7 # this factor has complete information
任何幫助,將不勝感激!
與NA數據:
library(zoo)
library(data.table)
setDT(Data)
Data[, MA.value := rollmeanr(value, 3, na.pad = TRUE), by = factor]
使用cbind
,它將所有數據轉換為字符。 嘗試這個。
value <- c(1:12)
factor <- c(rep("a",6), rep("b",6))
Data <- data.frame(factor = factor,
value = value)
ddply(Data, .(factor), transform, MAValue = SMA(value, 3))
factor value MAValue
1 a 1 NA
2 a 2 NA
3 a 3 2
4 a 4 3
5 a 5 4
6 a 6 5
7 b 7 NA
8 b 8 NA
9 b 9 8
10 b 10 9
11 b 11 10
12 b 12 11
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.