gpt4 book ai didi

r - 如何获取一列中具有最小值的行,按另一列分组,同时保留其他列?

转载 作者:行者123 更新时间:2023-12-02 08:28:46 25 4
gpt4 key购买 nike

我有以下数据:

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 获取 A 中具有最小值的行,但也具有 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

最佳答案

你可以试试

library(dplyr)
df %>%
group_by(B) %>%
filter(A==min(A))
# A B C
#1 1 P a
#2 4 Q d

或者

library(data.table)
setDT(df)[, .SD[A==min(A)], B]

或者使用base R

 df[with(df, ave(A, B, FUN=min)==A),]
# A B C
#1 1 P a
#4 4 Q d

关于r - 如何获取一列中具有最小值的行,按另一列分组,同时保留其他列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com