首页 > 解决方案 > R:根据条件存储任何现有名称的新列

问题描述

假设我们有一个如下所示的数据框:

a    b     c     d
22   18    25    9
12   24    6     18
37   8     22    25
24   19    12    27

我想从这些列中创建两个新列:a)一列存储列的名称,每行在其中获得最高值。b) 另一个存储其最高值。

换句话说,我想要的输出如下所示:

a    b     c     d    max_col  max_val
22   18    25    9    c        25
12   24    6     18   b        24
37   8     22    25   a        37
24   19    12    27   d        27

我该怎么做才能找回这个?

标签: rdplyr

解决方案


这是否有效:

> library(dplyr)
> df %>% rowwise() %>% mutate(max_col = names(df)[which.max(c_across(a:d))], max_val = max(c_across(a:d)))
# A tibble: 4 x 6
# Rowwise: 
      a     b     c     d max_col max_val
  <dbl> <dbl> <dbl> <dbl> <chr>     <dbl>
1    22    18    25     9 c            25
2    12    24     6    18 b            24
3    37     8    22    25 a            37
4    24    19    12    27 d            27
> 

推荐阅读