选择所有列中特定列中的值最大的行

我正在尝试选择数据框中的行,其中 X1 中的值是所有行中的最大值。

X1 <- c(0.7,0.6,0.2,0.5,0.2,0.1,0.1,0.1,0.3,0.2)
X2 <- c(0.1,0.2,0.6,0.3,0.7,0.8,0.1,0.1,0.2,0.7)
X3 <- c(0.1,0.2,0.8,0.2,0.2,0.1,0.4,0.2,0.1,0.2)
df <- data.frame(X1,X2,X3)

从可视化数据中可以看出,X1 是第 1、2、4、9 行的最大值。我尝试用循环写这样的东西,但没有成功。

df[ df$X1[i] == max(df[ [i] ,] ) , ]

是否需要通过循环来完成,还是可以使用函数来完成?任何帮助是极大的赞赏。谢谢

回答

do.call(pmax, df)将为您提供每行的最大值,您可以将其与X1选择行中最大值为 的行进行比较X1

df[df$X1 == do.call(pmax, df), ]

#   X1  X2  X3
#1 0.7 0.1 0.1
#2 0.6 0.2 0.2
#4 0.5 0.3 0.2
#9 0.3 0.2 0.1

也可以通过以下方式实现apply

df[df$X1 == apply(df, 1, max), ]


回答

处理它的另一种方法,如果您有兴趣:

library(dplyr)

df %>%
  rowwise() %>%
  filter(max(c_across(X1:X3)) == X1)

# A tibble: 4 x 3
# Rowwise: 
     X1    X2    X3
  <dbl> <dbl> <dbl>
1   0.7   0.1   0.1
2   0.6   0.2   0.2
3   0.5   0.3   0.2
4   0.3   0.2   0.1


以上是选择所有列中特定列中的值最大的行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>