获取R中所有列中具有最大值的行

时间:2011-05-19 11:22:43

标签: r dataframe

  

可能重复:
  Extracting indices for data frame rows that have MAX value for named field

你好,

我有一个这样的数据框:

   A1 A3    d
1   a pr    5
2   a be    0
3   a cd    8
4   a dy    0
5   b pr    3
6   b be    4
7   b cd    9

etc...

我想测试每一行,并根据A1获取唯一的行,并且最大值为d

输出应该是这样的

A1 A3 d
a  cd 8
b  cd 9

等。

数据框更大,但这就是一个例子。

这可以用R完成吗?没有循环和长的东西??

感谢

3 个答案:

答案 0 :(得分:2)

最简单的方法是对d列进行排序,然后删除A1列中的重复项:

df2 <- df[order(df$d,decreasing=T),]
df2[!duplicated(df2$A1),]

这假设存在唯一的唯一最大值,如果超过1,则会丢失一些结果。

答案 1 :(得分:1)

可能

ddply(dfr, "A1", function(curdfr){curdfr[which.max(curdfr$d),]})

答案 2 :(得分:0)

DATA

mydf <- read.table(textConnection("
 Lp   A1 A3    d
 1   a pr    5
 2   a be    0
 3   a cd    8
 4   a dy    0
 5   b pr    3
 6   b be    4
 7   b cd    9"),header=T,row.names="Lp")

CODE

require(data.table)
mydf <- data.table(mydf)
mydf[,.SD[which.max(d)],by=A1]