给定数据框df
,其中列d
,c
,v
。如何在d
的记录的子集中找到v
的最大值c == "foo"
?
我试过了:
df[df$v==max(df$v) & df$c == "foo","d"]
但我得到了:
character(0)
答案 0 :(得分:9)
with(df, d[v== max(v[c=="foo"])])
EDITED:
如果您想为d
的所有级别获取c
的值:
library(plyr)
ddply(df, "c", subset, v==max(v))
答案 1 :(得分:1)
虽然曼努埃尔的答案大部分时间都有效,但我相信会有更正确的版本:
with(df, d[v== max(v[c=="foo"]) & c=="foo"])
否则,可以匹配v==max
但实际上不是c=="foo"
的子集的行。