Моя цель - суммировать все значения в столбцах, начинающихся с префикса skill_
в data.table
. Я бы предпочел решение с помощью data.table
, но я не придирчив.
Мое решение до сих пор:
> require(data.table)
> DT <- data.table(x=1:4, skill_a=c(0,1,0,0), skill_b=c(0,1,1,0), skill_c=c(0,1,1,1))
> DT[, row_idx := 1:nrow(DT)]
> DT[, count_skills :=
sapply(1:nrow(DT),
function(id) sum(DT[row_idx == id,
grepl("skill_", names(DT)), with=FALSE]))]
> DT
x skill_a skill_b skill_c row_idx count_skills
1: 1 0 0 0 1 0
2: 2 1 1 1 2 3
3: 3 0 1 1 3 2
4: 4 0 0 1 4 1
Но это очень медленно, когда DT очень большой. Есть ли более эффективный способ сделать это?