如何在行中添加带有值的列名的列?

时间:2019-06-17 14:06:24

标签: r match cbind

我的问题可能没有很好地表述,听起来很复杂。但是我想要的很简单。 从给定的数据帧 Df 中,我创建了一个新的数据帧 Df1 ,其中包含每个单独列的最大值。 现在,我想在我的新数据框Df1中添加一列,并以每列的名称作为最大值。

我为此准备了一个例子。

A <- runif(5,min = 0.1, max = 3)
B <- runif(5,min = 0.1, max = 3)
C <- runif(5,min = 0.1, max = 3)
D <- runif(5,min = 0.1, max = 3)
E <- runif(5,min = 0.1, max = 3)
F <- runif(5,min = 0.1, max = 3)

Car <- c("Audi","BMW","Mercedes","Ford","Opel")

Df<-data.frame(Car,A,B,C,D,E,F)

Df1<-Df%>%
  group_by(Car)%>%
  summarize(max.value = max(A,B,C,D,E,F))

Df:

enter image description here

Df1:

enter image description here

我想要的:

enter image description here

1 个答案:

答案 0 :(得分:1)

一个选项是

library(dplyr)
Df %>%
   transmute(Car, max.value = pmax(!!! .[-1]), 
             rowName = names(.)[-1][max.col(.[-1])])