假设我有两个向量,
v1 = c(1,2,1,4,5,6,2,2,4,5,5,6)
v2 = c('lo', 'lo', 'la', 'la', 'la', 'li', 'li', 'li', 'li', 'lo', 'li', 'la')
我想取
v1
的平均值, 通过 lo, la, li
中定义的组 ( v2
) .什么是不循环的有效方法?谢谢!
最佳答案
这是 tapply
的标准票价:
tapply(v1, v2, mean)
# la li lo
# 4.000000 3.800000 2.666667
此外,一个有趣的方法可能是:
xtabs(v1 ~ v2)/table(v2) ## sum divided by length
如果我猜测(其他人可以自由地实际进行基准测试),我会认为
tapply
和 by
在这种情况下,性能将非常接近。 xtabs
+ table
不应该太慢,但肯定会因为双重制表而变慢。因为所有的转换为 data.frame
,试图简化输出,等等,我想aggregate
成为最慢的方法。
关于r - 通过在不同向量中定义的因子来获取一个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853791/