簡體   English   中英

數據幀中按因子變量的移動平均值,其中非領先的NA和整個因子水平作為R中的NA

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM