簡體   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