在 R 中添加标签以剪切函数

KT_*_*T_1 5 r

对于示例数据框:

df1 <- structure(list(X = 1:15, a = c(2L, 3L, 4L, 3L, 7L, 5L, NA, 2L, 
9L, 7L, 0L, 1L, 20L, 15L, 14L)), .Names = c("X", "a"), 
   class = "data.frame", row.names = c(NA, 
-15L))
Run Code Online (Sandbox Code Playgroud)

我使用以下代码将列“a”划分为四分位数:

cut.at.n.tile <- function(X , n = 4){ 
  cut( X , breaks = quantile( X , 
     probs = (0:n)/n , na.rm = TRUE ) , include.lowest = TRUE )}
df1$a.quartile <- cut.at.n.tile( df1$a , n = 4)
Run Code Online (Sandbox Code Playgroud)

如何用 1 - 4 替换标签(1 是最低的)?我不想简单地重新编码这些值,因为我将使用不同的连续变量运行很多次。

任何帮助将不胜感激。

Ben*_*ker 7

使用labels论证cut...

cut.at.n.tile <- function(X , n = 4){ 
   cut( X , breaks = quantile( X , 
      probs = (0:n)/n , na.rm = TRUE ) ,
      labels = 1:n,
      include.lowest = TRUE )}
cut.at.n.tile( df1$a , n = 4)
##  [1] 1    2    2    2    3    3    <NA> 1    4    3
##      1    1    4    4    4   
## Levels: 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

您可能还对 感兴趣ggplot2::cut_number,它本质上做同样的事情......

ggplot2::cut_number(df1$a, n = 4, labels = 1:4)
Run Code Online (Sandbox Code Playgroud)