我有一个如下所示的数据框:
index1 <- c(rep("A", 3), rep("B", 3), rep("C", 3))
index2 <- rep(c("X", "Y", "Z"), 3)
value <- sample(1:100, 9)
SEdata <- data.frame(index1, index2, value)
我想要的是value
和index1
的每个组合的最大index2
(即所有AX的最大值,所有AY的最大值)等等......)
我尝试过这样使用tapply
:
tapply(SEdata$value, SEdata$index1 & SEdata$index2, max)
......但这显然不起作用。
有没有办法让tapply
能够使用2个索引条件,还是有更好的方法来解决这个问题?
答案 0 :(得分:3)
将两个因素作为列表
tapply(SEdata$value, list(SEdata$index1, SEdata$index2), max)
答案 1 :(得分:1)
如果我理解你的问题,那么这里的一般构造就是使用list
:
> tapply(SEdata$value, list(SEdata$index1, SEdata$index2), max)
X Y Z
A 27 37 57
B 89 20 86
C 97 62 58
但是您的样本数据并非如此令人兴奋: - )
(使用set.seed(1)
获得的数字。)