簡體   English   中英

在 dplyr/ggplot2 中使用因子與字符和 integer 與雙列

[英]Using factor vs. character and integer vs. double columns in dplyr/ggplot2

我正在設置一個管道來導入、格式化、規范化和 plot 一堆數據集。 該管道將嚴重依賴 tidyverse 解決方案(dplyr 和 ggplot2)。

在輸入/格式步驟中,我想決定是否/何時在包含字母的各個列中使用因子與字符。 同樣,我需要決定是否應該將數值列指定為整數(在合理的情況下)或使用雙精度。

我的直覺是,默認情況下我應該只使用字符和雙精度。 速度和空間都不是問題,因為生成的數據集相對較小(最大約 20 x 10,000),所以我認為這會給我最大的靈活性。 走這條路有缺點嗎?

在大多數用例中,性能不應該是一個問題,標准是變量的含義。

因素與性格

如果您的數據只是沒有特定含義的字符串,請使用字符; 如果它是具有一組有限值的分類變量,則使用因子。 使用因子的主要優點是:

  1. 如果您嘗試提供不在級別中的新值,則會出現錯誤(這樣可以避免拼寫錯誤)
  2. 您可以對級別下訂單並獲得有序因子
  3. 某些函數(尤其是在建模時)需要明確的分類變量因子
  4. 您讓讀者清楚這些不是隨機字符串。

Integer 與雙

如果您知道您的列將只包含 integer 值,那么 integer 可能是更好的選擇。 事實上,雙精度數的計算可能會產生一些數字錯誤,在某些情況下,您最終可能會得到26.0000000001 != 26 另外,一些包可能知道輸入的類型(雖然我想不出任何例子)。

對於大數字(超過2e31 ),整數將無法存儲它們,而雙精度數仍將正常運行。

as.integer(2147483647)
#> [1] 2147483647
as.integer(2147483648)
#> [1] NA
#> Warning message:
#> NAs introduced by coercion to integer range 

但是當數字變得更大時,雙打也將開始失去有效數字:

1234578901234567890 == 1234578901234567891
#> [1] TRUE

總的來說,我認為這在實踐中並沒有太大的不同,使用 integer 類型可以向讀者和程序發出信號,如果該列中有十進制數,則出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM