如何提取与 R 中最大行值对应的列值?
How can I extract column value corresponding to maximum row value in R?
我需要计算:
a) 我的数据集(200 行)每一行的最大和最小(温度)值。
b) 每列对应于 'Jan'、'Feb' ... '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
Max Value是12,我要输出,'May'是对应的月份
maxvals <- apply(mydata,1,max)
maxlocs <- colnames(mydata)[apply(mydata,1,which.max)]
min
/which.min
也类似
顺便说一句,您对 (a) 的解决方案使您进入了 Patrick Burns R Inferno 的第二个圈子;效率低下在这个应用程序中可能无关紧要,但稍后可能会回来咬你......
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),]
我需要计算: a) 我的数据集(200 行)每一行的最大和最小(温度)值。 b) 每列对应于 'Jan'、'Feb' ... '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
Max Value是12,我要输出,'May'是对应的月份
maxvals <- apply(mydata,1,max)
maxlocs <- colnames(mydata)[apply(mydata,1,which.max)]
min
/which.min
顺便说一句,您对 (a) 的解决方案使您进入了 Patrick Burns R Inferno 的第二个圈子;效率低下在这个应用程序中可能无关紧要,但稍后可能会回来咬你......
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),]