На самом деле вы очень близки к тому, чтобы сделать это с aggregate
, но вам, возможно, понадобится дополнительная помощь от merge
.
Вот базовое решение R, где aggregate
+ merge
были используется, то есть
dfout <- merge(aggregate(pval~Gene,df,max),df,all.x = T)
таким, что
> dfout
Gene pval Marker
1 A 0.12 M1
2 B 0.55 M4
3 D 0.04 M8
ДАННЫЕ
df <- structure(list(Gene = c("A", "A", "B", "B", "B", "D", "D"), pval = c(0.12,
0.11, 0.33, 0.55, 0.06, 0.03, 0.04), Marker = c("M1", "M2", "M3",
"M4", "M5", "M7", "M8")), class = "data.frame", row.names = c(NA,
-7L))