有没有办法申请使用两个索引值(或等价物)?

时间:2014-07-03 19:12:55

标签: r tapply

我有一个如下所示的数据框:

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)

我想要的是valueindex1的每个组合的最大index2(即所有AX的最大值,所有AY的最大值)等等......)

我尝试过这样使用tapply

tapply(SEdata$value, SEdata$index1 & SEdata$index2, max) 

......但这显然不起作用。

有没有办法让tapply能够使用2个索引条件,还是有更好的方法来解决这个问题?

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)获得的数字。)