【问题标题】:convert a large number of data.table columns to factor by just matching a string pattern in column names [duplicate]通过仅匹配列名中的字符串模式将大量 data.table 列转换为因子 [重复]
【发布时间】:2018-03-21 15:39:49
【问题描述】:

我正在尝试将 data.table 中名称中包含特定字符串“_cat”的几列从整数转换为分类数据类型。 data.table 中的总列数很大(超过 700 列),我不想通过超过 700 列来确定哪些列的名称中有 _cat 来更改数据类型。 (它们在data.table中随机分布)

首先我得到一个逻辑数组,指示哪些列的名称中有“_cat”:

cat_id <- grepl('_cat', colnames(dt))

不知何故,我必须使用这个 cat_id 逻辑向量将 cat_id 中具有 TRUE 的相应列转换为因子。我不确定如何使用 by 子句排除没有模式的列(那些 cat_id 条目为 FALSE 的列)

dt <- dt[, lapply(.SD, as.factor), by = ??? ]

【问题讨论】:

    标签: r pattern-matching data.table type-conversion


    【解决方案1】:

    这不是按操作分组。要选择列,请使用 .SDcols,然后将输出分配 (:=) 回感兴趣的列

    dt[, (cat_id) := lapply(.SD, factor), .SDcols = cat_id ]
    

    在哪里

    cat_id <- grep('_cat', colnames(dt), value = TRUE)
    

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 2013-07-15
      • 2014-07-15
      • 2016-02-02
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多