从列表中提取和排序数据 - 找到最高值

时间:2014-01-20 17:11:01

标签: r variables dataframe extract

我创建了一个table并将其设置为数据框。前四个变量是因素,而后四个(票价,税,通,净)是数字。我需要找到哪个TA(旅行社)卖得最多。如何在最大结果上打印名称?例如:3300,支付更多。另外,在这个表中我有两个变量(3300和3303),票数最高(4)是R选择第一个最高变量吗?我能展示所有结果吗?含义:3300支付更多4 3303支付票4。

 IATA          NAME TICKET_NUM            PAX FARE TAX COMM
1  3300      pay more        700     john cohen   10 1.1    2
2  3300      pay more        701     james levy   11 1.2    2
3  3300      pay more        702 jonathan arbel   12 1.2    3
4  3300      pay more        703      gil matan    9 1.0    2
5  3301      you pay         704      ron natan   19 2.0    6
6  3301      you pay         705    don horvitz   18 2.0    6
7  3302 pay by ticket        706  lutter kaplan    9 1.2    0
8  3303         enjoy        707   lutter omega   12 1.2    0
9  3303         enjoy        708   graig daniel   14 1.3    1
10 3303         enjoy        730 orly rotenberg   15 1.0    1
11 3303         enjoy        731     yohan bach   12 1.0    1

1 个答案:

答案 0 :(得分:0)

假设NAME是旅行社名称而x是数据,您可以使用aggregate获取每个座席的总和:

agg <- aggregate(FARE ~ IATA, data=x, FUN=sum)

然后排序并采取顶部元素:

top_agent <- agg[order(agg$FARE, decreasing=TRUE),][1,] # Does not account for ties!

编辑补充:我想我误解了你的问题。如果您想知道每个代理商销售的票数而不是票的总价值,您可以使用aggregate轻松计算它们。这可以通过向每行添加票证计数并获取票证数量的总和来轻松实现。每行有一张票:

x$tickets <- 1

此汇总给出了每个代理的门票数量:

agg <- aggregate(tickets ~ IATA, data=x, FUN=length) # Equivalently, FUN=sum

此处的最高代理程序由非常类似的计算给出:

top_agent <- agg[order(agg$tockets, decreasing=TRUE),][1,] # Still does not account for ties.

然后,此代理人的所有活动都由以下人员提供:

x[x$IATA == top_agent,]