查找R中每个唯一项的最大值出现次数

时间:2011-08-18 22:17:55

标签: r

我试图通过一些简单的方法来实现这一点。

说,有一个售卖汽车的表格,以及汽车模型的名称和汽车的售价

例如,

    CarName     Price
    AcuraLegend 30000 
    AcuraTSX    40000 
    HondaCivic  20000 
    HondaCivic  22000 
    HondaCivic  22000 
    ToyotaCamry 18000

然后再增加2900个条目

我需要的是找到每辆车售出的最高价格以及最大售出的该类型汽车的数量。因此,如果我们使用上述数据框架,假设在整个数据框架中为HondaCivic支付的最高价格是22000,并且只有2辆车以此价格出售,对于HondaCivic我会有,

CarName     MaxPricePaidForCar         NumberofCarsSoldforMaxPrice
HondaCivic      22000                  2 

现在,我已经设法用一种相当繁琐的方式使用tapply和merge等等。

对更简单方法的任何建议都会非常有用,

3 个答案:

答案 0 :(得分:6)

要为每种独特类型的汽车执行此操作,您可以在ddply包中使用plyr

ddply(carList,.(carName), .fun = summarise, maxPrice = max(Price), 
                                            numCars = sum(Price == max(Price)))

答案 1 :(得分:3)

以下是使用data.table的另一种方法。如果您的数据框很大并且速度很快,那么这应该可以为您提供大约4倍的加速。

library(data.table)
carT = data.table(carList)
carT[,list(maxPrice = max(Price), numCars = sum(Price == max(Price))),'carName']

答案 2 :(得分:1)

对于这些小任务,我非常喜欢cast包中的reshape

cast(df, CarName ~., c(function(x) sum(x == max(x)),max))