【发布时间】:2019-06-22 06:12:48
【问题描述】:
我正在尝试在具有多个组的数据帧上运行一些移动平均线。我对每组 20 个系列中的最后一个 SMA 感兴趣。下面的第二个示例崩溃,因为一个系列 (C) 只有 10 个值。我需要做什么才能使它不会崩溃? C 需要保留在结果中。我很高兴 C 在结果中是 NA。
df <- data.frame(x=c(rep("A", 30), rep("B", 30),rep("C", 10)), y=rnorm(n = 70, 100, 20))
df
ddply(df, .(x), summarise, SMA10= tail(SMA(y, n=10), 1)) # Works because all groups have at least 10 values
ddply(df, .(x), summarise, SMA10= tail(SMA(y, n=20), 1)) # Does not work
Error in runSum(x, n) : n = 20 is outside valid range: [1, 10]
【问题讨论】: