[英]summarise returning -inf when using na.rm = TRUE
我最近構建了一個簡單的 R 腳本來總結三個不同的數據框。 自從更新到最新版本的 R 和 R Studio 后,我遇到了以前從未見過的輸出,在 dplyr 中僅對其中一個數據幀使用匯總函數(其他兩個都很好)。 我還收到了一系列我不熟悉的警告。 請注意,在更新之前,我完全按照編寫的方式運行腳本,任何數據框都沒有問題。
有問題的數據框稱為VO2,其設置如下:
Name Sex VO2
AthleteA M 50
AthleteA M 52
AthleteA M NA
AthleteB M 49
AthleteB M 56
AthleteB M 47
AthleteC M 42
AthleteC M NA
AthleteC M 41
AthleteD M NA
AthleteD M NA
AthleteD M NA
我運行的代碼是:
Test.Summary.VO2 = VO2 %>% group_by(Name, Sex) %>%
summarise(Best.Score = max(VO2, na.rm=TRUE))
此代碼生成以下摘要:
Name Sex Best.Score
AthleteA M 52
AthleteB M 56
AthleteC M 42
AthleteD M -Inf
-Inf 值在輸出中是全新的。 我無法弄清楚為什么它現在出現在只有 NA 的情況下。
如上所述,我對第二個數據框有完全相同的布局並運行相同類型的摘要。 這里一切正常。 當我用 na.rm=TRUE 進行總結時,它會刪除 NA 案例而不用 -Inf 值替換 NA 案例。
更不尋常的是,當我使用以下方法查看數據框時:
View(Test.Summary.VO2)
我收到以下一系列警告消息:
There were 38 warnings (use warnings() to see them)
warnings()
Warning messages:
1: Unknown or uninitialised column: 'Quad'.
2: Unknown or uninitialised column: 'Quad'.
3: Unknown or uninitialised column: 'Quad'.
4: Unknown or uninitialised column: 'Quad'.
稍后在腳本中,我生成了一個名為“Quad”的新變量。 但是即使在我清除環境並重新啟動 R Studio 后,上述警告也會出現。 我什至嘗試重命名 .csv 文件並使用不同的數據框名稱導入。 這幾乎就像腳本中稍后生成的“Quad”列在環境中的某個地方徘徊。
我真的不知道這里可能會發生什么。
我希望 Stack 上的一位 R 專家可以為我提供有關如何解決此問題的想法。
謝謝你的考慮。
見?max
:
數字空集的最小值和最大值是 +Inf 和 -Inf(按此順序!),它們確保傳遞性,例如
min(x1, min(x2)) == min(x1, x2)
。 對於數字xmax(x) == -Inf
和min(x) == +Inf
只要length(x) == 0
(如果需要,在刪除缺失值之后)。 但是,如果所有並行元素都是NA
即使對於na.rm = TRUE
,pmax
和pmin
也會返回NA
。
組 D 沒有任何非 NA 值,因此max
返回空集的值。
遲到了,但是當沒有要最大化的值時,解決方案是返回 NA 而不是 Inf。 這可以通過 hablar 包的 s 函數來完成。
library(dplyr)
library(hablar)
VO2 %>%
group_by(Name, Sex) %>%
summarise(Best.Score = max(s(VO2)))
這給了你:
Name Sex Best.Score
<chr> <chr> <int>
1 AthleteA M 52
2 AthleteB M 56
3 AthleteC M 42
4 AthleteD M NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.