可能重复:
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完成吗?没有循环和长的东西??
感谢
答案 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]