我有一个带有列的数据框a
:
x = data.frame(
"a" = c(F, F, F, T,
F, T, T, F,
T, T, F)
)
我想知道每一个如4行的频率是什么a
幸福T
是和这个值应用到一个新列b
,使前4行的频率T
为1/4,在接下来的4行的频率T
是2 /4,其余 3 行的频率T
为 2/3:
x$b = c(0.25,0,25,0.25,0.25
0.5,0.5,0.5,0.5,
0.66,0.66,0.66)
我可以a
通过使用来获取列的频率tapply
,但这会给我一个列表而不是向量。
如果不使用外部库,我将不胜感激。
我们可以使用基数 R ave
。我们可以创建一个每个n
元素的组,并找到每个组的 TRUE 元素数量与总元素的比率。
n <- 4
x$b <- ave(x$a, rep(seq(1, nrow(x)), each = n, length.out = nrow(x)),
FUN = function(x) sum(x)/length(x))
x
# a b
#1 FALSE 0.2500000
#2 FALSE 0.2500000
#3 FALSE 0.2500000
#4 TRUE 0.2500000
#5 FALSE 0.5000000
#6 TRUE 0.5000000
#7 TRUE 0.5000000
#8 FALSE 0.5000000
#9 TRUE 0.6666667
#10 TRUE 0.6666667
#11 FALSE 0.6666667
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句