cut
位於 base
包(package)。 說明
cut
將x
的範圍劃分為多個區間,並根據屬於哪個區間對x
中的值進行編碼。最左邊的間隔對應於第一級,下一個最左邊的間隔對應於第二級,依此類推。
用法
cut(x, ...)
## Default S3 method:
cut(x, breaks, labels = NULL,
include.lowest = FALSE, right = TRUE, dig.lab = 3,
ordered_result = FALSE, ...)
參數
x |
要通過切割轉換為因子的數值向量。 |
breaks |
兩個或多個唯一切割點的數值向量或單個數字(大於或等於 2),給出 |
labels |
結果類別級別的標簽。默認情況下,標簽是使用 |
include.lowest |
邏輯,指示“x[i]”是否等於最低(或最高,對於 |
right |
邏輯,指示間隔是否應在右側關閉(並在左側打開),反之亦然。 |
dig.lab |
未給出標簽時使用的整數。它確定用於格式化中斷編號的位數。 |
ordered_result |
邏輯:結果應該是有序因子嗎? |
... |
傳入或傳出其他方法的進一步參數。 |
細節
當breaks
指定為單個數字時,數據範圍被分成等長的breaks
塊,然後將外部限製移開範圍的0.1%,以確保極值都落在範圍內休息間隔。 (如果 x
是常量向量,則創建 equal-length 間隔,其中之一包含單個值。)
如果指定了 labels
參數,則其值用於命名因子水平。如果未指定,則因子級別標簽將構造為 "(b1, b2]"
、 "(b2, b3]"
等(對於 right = TRUE
)以及 "[b1, b2)"
,...(如果 right =
FALSE
)。在這種情況下, dig.lab
表示格式化數字 b1
、 b2
、...時應使用的最小位數。如果需要區分任何對,將使用更大的值(最多 12 個)端點數:如果失敗,將使用 "Range3"
等標簽。格式化由 formatC
完成。
默認方法將對 breaks
的數值向量進行排序,但不需要其他方法,並且 labels
將對應於排序後的間隔。
來自R3.2.0,getOption("OutDec")
構建標簽時會參考labels = NULL
.
值
返回 factor
,除非 labels = FALSE
產生級別代碼的整數向量。
超出 breaks
範圍的值將編碼為 NA
,NaN
和 NA
值也是如此。
注意
hist(x, br, plot = FALSE)
比 table(cut(x, br))
更高效且更少占用內存。 findInterval()
比 cut(*,
labels = FALSE)
更高效。
例子
Z <- stats::rnorm(10000)
table(cut(Z, breaks = -6:6))
sum(table(cut(Z, breaks = -6:6, labels = FALSE)))
sum(graphics::hist(Z, breaks = -6:6, plot = FALSE)$counts)
cut(rep(1,5), 4) #-- dummy
tx0 <- c(9, 4, 6, 5, 3, 10, 5, 3, 5)
x <- rep(0:8, tx0)
stopifnot(table(x) == tx0)
table( cut(x, breaks = 8))
table( cut(x, breaks = 3*(-2:5)))
table( cut(x, breaks = 3*(-2:5), right = FALSE))
##--- some values OUTSIDE the breaks :
table(cx <- cut(x, breaks = 2*(0:4)))
table(cxl <- cut(x, breaks = 2*(0:4), right = FALSE))
which(is.na(cx)); x[is.na(cx)] #-- the first 9 values 0
which(is.na(cxl)); x[is.na(cxl)] #-- the last 5 values 8
## Label construction:
y <- stats::rnorm(100)
table(cut(y, breaks = pi/3*(-3:3)))
table(cut(y, breaks = pi/3*(-3:3), dig.lab = 4))
table(cut(y, breaks = 1*(-3:3), dig.lab = 4))
# extra digits don't "harm" here
table(cut(y, breaks = 1*(-3:3), right = FALSE))
#- the same, since no exact INT!
## sometimes the default dig.lab is not enough to be avoid confusion:
aaa <- c(1,2,3,4,5,2,3,4,5,6,7)
cut(aaa, 3)
cut(aaa, 3, dig.lab = 4, ordered_result = TRUE)
## one way to extract the breakpoints
labs <- levels(cut(aaa, 3))
cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs) ),
upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs) ))
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
split
用於根據組因子拆分變量; factor
、tabulate
、table
、findInterval
。
quantile
用於選擇內容大致相等(而不是長度)的中斷的方法。
.bincode
適用於 bare-bones 版本。
相關用法
- R cut.POSIXt 將日期或日期時間對象轉換為因子
- R cumsum 累積和、乘積和極值
- R curlGetHeaders 從 URL 中檢索標頭
- R chartr 字符翻譯和裝箱
- R chol2inv Cholesky(或 QR)分解的逆分解
- R col 列索引
- R character 字符向量
- R c 將值組合到向量或列表中
- R conditions 狀況處理和恢複
- R class 對象類
- R connections 操作連接的函數(文件、URL...)
- R comment 查詢或設置“評論”屬性
- R complex 複數和基本函數
- R chooseOpsMethod 選擇適當的操作方法
- R colSums 形成行和列的總和及平均值
- R chol 喬列斯基分解
- R commandArgs 提取命令行參數
- R cbind 按行或列組合 R 對象
- R crossprod 矩陣叉積
- R cat 連接並打印
- R capabilities 此 R 版本的報告函數
- R callCC 調用當前延續
- R call 函數調用
- R charmatch 部分字符串匹配
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Convert Numeric to Factor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。