【问题标题】:Function to group continuous variable in data.table在 data.table 中对连续变量进行分组的函数
【发布时间】:2019-12-28 15:10:54
【问题描述】:

我正在尝试创建一个函数来对 R 中的 data.table 中的变量进行分组,这是我迄今为止的尝试:

fun_group = function(data,col_a,lower,upper,by){
  data2 <- data.table(data)

  data2[, .SD, .SDcols = c(col_a)]

  #function to make categories:
  fun_cat_var <- function(x, lower = 0, upper, by = 10,
                          sep = "-", above.char = "") {

    x[x<lower] <- lower

    labs <- c(paste(seq(lower, upper - by, by = by)),
              paste(upper, above.char, sep = ""))

    cut(floor(x), breaks = c(seq(lower, upper, by = by), Inf),
        right = FALSE, labels = labs)
  }


  data2[, ("grp") := lapply(.SD, fun_cat_var), .SDcols = c(predictor,lower,upper,by)]
}

问题是我不确定语法是如何工作的,我应该把下部、上部和 by 参数放在哪里?这个函数给了我错误:

Error in `[.data.table`(data2, , `:=`(("grp"), lapply(.SD, fun_cat_var)),  : 
  Some items of .SDcols are not column names: [100, 200, 10]

,当我运行时

fun_group(mtcars,"hp")

【问题讨论】:

    标签: r data.table grouping


    【解决方案1】:

    评论太长了。您在寻找:

    fun_group = function(data, col_a, lower, upper, by){
        data2 <- data.table(data)
    
        #function to make categories:
        fun_cat_var <- function(x, lower = 0, upper, by = 10,
            sep = "-", above.char = "") {
    
            x[x<lower] <- lower
    
            labs <- c(paste(seq(lower, upper - by, by = by)),
                paste(upper, above.char, sep = ""))
    
            cut(floor(x), breaks = c(seq(lower, upper, by = by), Inf),
                right=FALSE, labels=labs)
        }
    
        data2[, paste0("OUT_", col_a) := lapply(.SD, fun_cat_var, lower=lower, upper=upper, by=by), .SDcols=col_a]
    }
    fun_group(mtcars, "hp", 0, 400, 100)
    

    如果是,您可能希望结束该问题,因为它只是一些语法问题。

    【讨论】:

    • @Helen,你可能想删除这个问题。因为这只是一些语法问题
    • 好的,谢谢!但我收到“您无法删除此问题,因为其他人已投入时间和精力来回答它。有关更多信息,请访问帮助中心。”
    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 2018-07-10
    • 2021-03-22
    • 2017-01-08
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多