Я хотел бы суммировать количество столбцов, значения которых превышают порог в наблюдении.Кроме того, я хотел бы указать эти имена столбцов и пороги в качестве векторов (cols
, th
)
. Взять пример набора данных:
x <- data.table(x1=c(1,2,3),x2=c(3,2,1))
Цель состоит в том, чтобы создатьновый столбец exceed.count
с количеством столбцов, в которых x1 и x2 превышают соответствующий порог.Предполагая случай, когда пороговые значения для x1 и x2 равны 2:
th <- c(2,2)
Функция может быть определена следующим образом:
fn <- function(z,th) (sum(z[,x1]>th[1],z[,x2]>th[2]))
И число столбцов, превышающее пороговые значения, рассчитывается как:
x[,exceed.count:=fn(.SD,th),by=seq_len(nrow(x))]
Результаты следующие:
x1 x2 exceed.count
1: 1 3 1
2: 2 2 0
3: 3 1 1
Я бы хотел указать имена столбцов как векторные, например,
cols <- c("x1","x2")
Я играл с функцией вида:
fn.i <- function(z,i) (sum(z[,cols[i],with=FALSE] > th[i]))
, которая работает для одного i, но как мне векторизовать это через элементы столбцов?(cols
и th
всегда будут одинаковой длины)