如何提取与R中最大行值对应的列值?

时间:2015-04-15 00:43:58

标签: r row max

我需要计算: a)我的数据集的每一行的最大和最小(温度)值(200个这样的行)。 b)每列对应于' Jan',' 2月' ......' Dec' (12列)。因此,我需要找到与最高和最低温度相关的月份。

对于(a)这是有效的:

 i= 1
  temp.max = NULL
  for(i in 1:200)
  { temp.max[i]<- max(temp.data[i,1:12])}

有人可以帮助我(b)吗?

例如。如果数据集如下所示:

Jan Feb Mar Apr May Jun ... Dec
1     2   3   4  12   6       2

最大值为12.我需要输出,&#39;五月&#39;是相应的月份。

2 个答案:

答案 0 :(得分:3)

max.col对此非常方便(我已经重复了第一行3次以显示它适用于多行):

names(dat)[max.col(dat,ties.method="first")]
#[1] "May" "May" "May"

使用的数据:

dat <- setNames(data.frame(matrix(c(1,2,3,4,12,6,2),nrow=1)),month.abb[1:7])
dat <- dat[rep(1,3),]

答案 1 :(得分:0)

maxvals <- apply(mydata,1,max)
maxlocs <- colnames(mydata)[apply(mydata,1,which.max)]

,同样适用于min / which.min

顺便说一句,你对(a)的解决方案会让你进入Patrick Burns R Inferno的第二个圈子;效率低下可能在这个应用程序中无关紧要,但可能会在以后回来咬你......