找到几列的最大值并打印以及匹配的列名

时间:2017-11-05 13:46:12

标签: r

我有一个数据框,其中每个区域的销售价值在一年的前三个季度及其总数

Zone Q1     Q2      Q3      total
a   15.21   53.31   80.1    109.04
b   19.2    52.35   71.5    84.1
c   10.24   28.56   70.41   100.05
d   11.94   38.58   59.72   76.34
e   11.05   37.32   53.34   67.97

我必须找到每个季度的最大销售价值以及区域名称。我用了sapply(df[,c(2:5)],function(X) max(X)) 获得了每个季度的最大销售额以及总额。结果

Q1         Q2           Q3          Total
19.2       53.51        80.10       109.04 

但它还需要每个最大值的区域名称。哪个函数可用于获取区域名称或唯一的方法是找到每个区域,将其附加到向量?

2 个答案:

答案 0 :(得分:3)

不能这样做。你可以相应地做出这个功能。

dimen

感谢是否有效。

答案 1 :(得分:0)

你可以这样做......

df2 <- df[,-1]

#difference columns to get quarterly sales (yours appear to be cumulative)
df2[,-1] <- df2[,-1]-df2[,-4]

#rename final quarter
names(df2)[4] <- "Q4"

#create data frame with best sales for each quarter
best <- data.frame(Zone=df$Zone[apply(df2, 2, which.max)],
                   Sales=apply(df2, 2, max))

best
   Zone Sales
Q1    b 19.20
Q2    a 38.10
Q3    c 41.85
Q4    c 29.64