[英]Using factor vs. character and integer vs. double columns in dplyr/ggplot2
我正在設置一個管道來導入、格式化、規范化和 plot 一堆數據集。 該管道將嚴重依賴 tidyverse 解決方案(dplyr 和 ggplot2)。
在輸入/格式步驟中,我想決定是否/何時在包含字母的各個列中使用因子與字符。 同樣,我需要決定是否應該將數值列指定為整數(在合理的情況下)或使用雙精度。
我的直覺是,默認情況下我應該只使用字符和雙精度。 速度和空間都不是問題,因為生成的數據集相對較小(最大約 20 x 10,000),所以我認為這會給我最大的靈活性。 走這條路有缺點嗎?
在大多數用例中,性能不應該是一個問題,標准是變量的含義。
如果您的數據只是沒有特定含義的字符串,請使用字符; 如果它是具有一組有限值的分類變量,則使用因子。 使用因子的主要優點是:
如果您知道您的列將只包含 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.