使用dplyr和来自不同列的返回元素查找列中的最大值

使用dplyr和来自不同列的返回元素查找列中的最大值,r,dataframe,dplyr,max,R,Dataframe,Dplyr,Max,假设以下数据帧: df试试这个。将数据重塑为long,然后按包含列的name变量分组。在该过滤器之后,获取最大值并识别a变量中的观察值。代码如下: library(tidyverse) #Code newdf <- df %>% pivot_longer(-a) %>% group_by(name) %>% filter(value==max(value)) 库(tidyverse) #代码 newdf%pivot\u更长(-a)%%>%group\u by(name)

假设以下数据帧:


df试试这个。将数据重塑为long,然后按包含列的
name
变量分组。在该过滤器之后,获取最大值并识别
a
变量中的观察值。代码如下:

library(tidyverse)
#Code
newdf <- df %>% pivot_longer(-a) %>% group_by(name) %>% filter(value==max(value))
库(tidyverse)
#代码
newdf%pivot\u更长(-a)%%>%group\u by(name)%%>%filter(value==max(value))
输出:

# A tibble: 3 x 3
# Groups:   name [3]
  a      name  value
  <fct>  <chr> <dbl>
1 blue   c         7
2 yellow d         8
3 orange b         7
#一个tible:3 x 3
#分组:名称[3]
名称值
1蓝色c 7
2黄色d 8
3橙色b 7

在重塑为“长”格式后,我们可以使用
slice\u max

library(dplyr)
library(tidyr)
df %>% 
    pivot_longer(-a) %>% 
    group_by(name) %>% 
    slice_max(value)
-输出

# A tibble: 3 x 3
# Groups:   name [3]
#  a      name  value
#  <chr>  <chr> <dbl>
#1 orange b         7
#2 blue   c         7
#3 yellow d         8
#一个tible:3 x 3
#分组:名称[3]
#名称值
#     
#1橙色b 7
#2蓝色c 7
#3黄色d 8