繁体   English   中英

在使用 dplyr 和 tidyR 函数时,在包含 -Inf 和 NA 值的列中查找最大值

[英]Find max value in a column that contain -Inf and NA values while using dplyr and tidyR functions

我有一个看起来像这样的数据框,我想使用 dplyr 函数(例如 slice_n 和 top_n)在 col1 中找到最大值

df = data.frame(col1=c(-Inf, 10,NaN, NA,200,Inf), col2=c(30,30, 10,200,20,10))
 col1 col2
  -Inf   30
    10   30
   NaN   10
    NA  200
   200   20
   Inf   10

到目前为止,我还没有做到这一点,我想知道社区是否可以帮助我或给我提示。 我非常感谢你的时间

要找到col1中的最大非无限值:

df %>% 
  filter(!is.infinite(col1)) %>% 
  summarise(Max=max(col1, na.rm=TRUE)) %>%
  pull(Max)

[1] 200

或者

max(df$col1[!is.infinite(df$col1)], na.rm=TRUE)
[1] 200

要在col1中查找包含最大非无限值的行:

df %>% filter(!is.infinite(col1)) %>% slice_max(col1) 
  col1 col2
1  200   20

filter()的调用是为了响应 OP 的指示,即它们需要返回非无限值。 如果可以接受无限值,只需省略调用即可。 请注意,正如 OP 在他们的问题中所要求的那样, slice_max等人不从列返回值,而是从数据框中返回行

请注意, top_n()已被取代。

df %>% gather() %>% group_by(key) %>% slice_max(value)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM