查找某些变量的最小类别值-R
让我拥有以下数据框架df:查找某些变量的最小类别值-R,r,dataframe,R,Dataframe,让我拥有以下数据框架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) 我想求x的值,对于y1和y2,它是x的最小值 我希望达到df的以下输出: y1 y2 a3 a2 b1 b2 我怎样才能到达那个地方?我
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)
我想求x的值,对于y1和y2,它是x的最小值
我希望达到df的以下输出:
y1 y2
a3 a2
b1 b2
我怎样才能到达那个地方?我的原始数据要大得多
非常感谢。您没有定义明确的组列,我们可以先创建一个。对于所示的示例,我们可以删除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
您没有定义明确的组列,我们可以先创建一个。对于所示的示例,我们可以删除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
我们可以用
library(stringr)
library(dplyr)
df %>%
group_by(grp = str_remove(x, "\\d+")) %>%
summarise(across(where(is.numeric), ~ x[which.min(.)]))
# A tibble: 2 x 3
# grp y1 y2
# <chr> <chr> <chr>
#1 a a3 a2
#2 b b1 b2
我们可以用
library(stringr)
library(dplyr)
df %>%
group_by(grp = str_remove(x, "\\d+")) %>%
summarise(across(where(is.numeric), ~ x[which.min(.)]))
# A tibble: 2 x 3
# grp y1 y2
# <chr> <chr> <chr>
#1 a a3 a2
#2 b b1 b2
data.table选项
data.table选项