获取数据框中的最大值位置和相应的行元素

时间:2014-07-30 06:43:39

标签: r

我创建了一个名为“data”的数据框,并且有100行名称和相应的年龄(名称“NAMES”和“AGES”)。现在我尝试使用max()函数找到最大年龄 max(data [,“AGES”])

我获得了最大年龄,但我也希望获得该职位以及具有最大年龄的人的姓名。在得到最大年龄的人的名字后,我想按字母顺序排列它们。我该怎么做?

我尝试在网上搜索,但没有成功地总结不同的东西..

1 个答案:

答案 0 :(得分:0)

让我们先生成一些演示数据:

data<-data.frame(NAMES=replicate(100, paste(sample(letters, 8, replace=T), collapse="")), AGES=sample(20:60, 100, replace=T))
head(data)

     NAMES AGES
1 oepefudt   21
2 ibmuaemm   49
3 mkockaqu   23
4 whyzomna   59
5 omqqtbsz   35
6 qnbmjmuf   25

然后我们可以找到具有最大年龄的行,提取它们的名称,最后按字母顺序将它们排成一行:

sort(as.character(data$NAMES[data$AGES==max(data$AGES)]))

或者可能更透明:

# Find the maximum age
max.age<-max(data$AGES)
# Which rows have the maximum age value?
ind<-which(data$AGES==max.age)
# Extract the name using the ind from above
persons<-as.character(data$NAMES[ind])
# Sort the names
persons.sorted<-sort(persons)
persons.sorted

这会有帮助吗?