在R dplyr中保留跨列的每行的最大值

hmtdttj4  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(139)

这可能看起来很傻,但我很难为R dplyr找到一些东西。
我有一个像这样的大型数据框

library(tidyverse)

set.seed(123)
df <- tibble(id=seq(1:5), col1=runif(5,100,1000), col2=runif(5,100,1000),coln=runif(5,200,1000))
df
#> # A tibble: 5 × 4
#>      id  col1  col2  coln
#>   <int> <dbl> <dbl> <dbl>
#> 1     1  359.  141.  965.
#> 2     2  809.  575.  563.
#> 3     3  468.  903.  742.
#> 4     4  895.  596.  658.
#> 5     5  946.  511.  282.

创建于2022年12月1日,reprex v2.0.2
我想找到每一行中的最大值,并使我的数据看起来像这样。

#>      id  col1  col2  coln max
#>   <int> <dbl> <dbl> <dbl> 
#> 1     1  359.  141.  965.  965
#> 2     2  809.  575.  563.  809
#> 3     3  468.  903.  742.  903
#> 4     4  895.  596.  658.  895
#> 5     5  946.  511.  282.  946

我想象过这样的事情,但我失败了。

df %>% 
  rowwise() %>% 
  mutate(max = max(col1:coln))

如有任何帮助或建议,我将不胜感激

u5rb5r59

u5rb5r591#

您必须使用c_across

library(tidyverse)

set.seed(123)
df <- tibble(id = seq(1:5), col1 = runif(5, 100, 1000), col2 = runif(5, 100, 1000), coln = runif(5, 200, 1000))

df %>%
  rowwise() %>%
  mutate(max = max(c_across(col1:coln)))
#> # A tibble: 5 × 5
#> # Rowwise: 
#>      id  col1  col2  coln   max
#>   <int> <dbl> <dbl> <dbl> <dbl>
#> 1     1  359.  141.  965.  965.
#> 2     2  809.  575.  563.  809.
#> 3     3  468.  903.  742.  903.
#> 4     4  895.  596.  658.  895.
#> 5     5  946.  511.  282.  946.

相关问题