【发布时间】:2017-02-20 16:19:15
【问题描述】:
基于下面的数据框,我想基于三个条件使用rollmean创建一个新列-b列中的值相互匹配,a列中要平均的最小值为2,我只想平均当前行下方的所有值。如果要平均的值的数量为 2 或更少,我想返回一个空白值。
我假设我必须使用应用函数来执行此操作,但我不确定从哪里开始。
a=c(1,2,3,4,1,2,3,4,1,2,3,4)
b=c("X","X","X","X","Y","Y","Y","Y","Z","Z","Z","Z")
df=as.data.frame(cbind(a,b))
我希望决赛桌看起来像:
Name Value Output
X 1 2.5
X 2 3
X 3
X 4
Y 1 2.5
Y 2 3
Y 3
Y 4
Z 1 2.5
Z 2 3
Z 3
Z 4
【问题讨论】:
-
你能用上面的例子解释一下你的情况吗?例如,上面数据帧中的值 2.5 是如何出现在第一行的,或者为什么它在第三行是空白的?
-
第 1 行的输出值是后面所有 name =X 行的平均值,也就是 1,2,3,4 的平均值。在第 2 行中,输出是 2、3、4 或 3 的平均值。在第三行中,没有足够数量的值进行平均(小于 3),因此输出不返回任何内容。