1

我有一个看起来像这样的数据框:

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所有AX的最大值,所有AY的最大值等......)index1index2

我试过tapply这样使用:

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

...但这显然行不通。

有没有办法tapply使用 2 个索引条件或者有更好的方法来解决这个问题?

4

2 回答 2

5

提供两个因素作为列表

tapply(SEdata$value, list(SEdata$index1, SEdata$index2), max)
于 2014-07-03T19:16:23.823 回答
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)。)

于 2014-07-03T19:16:08.007 回答