2
我有以下數據:如何獲得一列中的最小值的行,按其他列分組,同時保留其他列?
df <- data.frame(A = c(1,2,3,4,5,6), B=c("P","P","P","Q","Q","Q"), C=c("a","b","c","d","e","f"))
df
## A B C
## 1 1 P a
## 2 2 P b
## 3 3 P c
## 4 4 Q d
## 5 5 Q e
## 6 6 Q f
欲某種方式得到與所述的每個不同的B中的最小值的行,而且還與在C.例如對應的值
## A B C
## 1 1 P a
## 4 4 Q d
我嘗試以下,但同樣沒有我想要的東西:
> aggregate(df[c('A')], by=df[c('B')], FUN=min)
B A
1 P 1
2 Q 4
> aggregate(df[c('A')], by=df[c('B','C')], FUN=min)
B C A
1 P a 1
2 P b 2
3 P c 3
4 Q d 4
5 Q e 5
6 Q f 6
謝謝!我最終使用了'dplyr'解決方案。但是:事實上,它爲一個組輸出多行,如果最小值出現多次,因爲我不想這樣做,所以我使用:'df%>%group_by(B)%>%filter(A == min (A))%>%distinct%(A)' – 2015-04-05 17:54:29
@DimitriSchachmann如果你有關係並且需要第一個值,你也可以使用'which.min'即'df%>%group_by(B)%>%slice .min(B))' – akrun 2015-04-05 18:01:42