首页 > 解决方案 > 查找某些变量最小的类别值 - R

问题描述

让我有以下数据框(df):

x=c("a1","a2","a3","b1","b2","b3")
y1=c(4,2,1,1,5,8)
y2=c(7,1,9,3,2,10)

df<-data.frame(x,y1,y2)

即:

> df
   x y1 y2
1 a1  4  7
2 a2  2  1
3 a3  1  9
4 b1  1  3
5 b2  5  2
6 b3  8 10

我想通过 x 组找到 y1 和 y2 的最小值 x 的值。

我想达到 df 的以下输出:

y1   y2
a3   a2
b1   b2

我怎样才能达到那个recult?我的原始数据要大得多。

非常感谢。

标签: rdataframe

解决方案


您没有定义明确的组列,我们可以先创建一个。对于所示的示例,我们可以从x列中删除所有数字并将其用作组列。对于每个组,我们可以找出列中的最小值并得到x它的对应值。

library(dplyr)

df %>%
  group_by(group = sub('\\d+', '', x)) %>%
  summarise(across(y1:y2, ~x[which.min(.)]))

#  group y1    y2   
#  <chr> <chr> <chr>
#1 a     a3    a2   
#2 b     b1    b2   

推荐阅读