Я хотел бы создать переменную, которая равна 1, если любая из выбранных переменных начинается с заданной строки ("A" в примере) в data.table.
Пример с игрушечными данными, чтобы понять суть:
library(data.table)
DT=as.data.table(matrix(c(LETTERS[seq( from = 1, to = 9 )],rep("A",3)), nrow=3, ncol=4))
Мои попытки состоят в том, чтобы использовать grepl внутри приложения команды data.table := (с максимальным значением аспекта «если есть») для записи новой переменной. Что-то вроде:
DT[,letterA:= max(apply(.SD,2,grepl,pattern= "^A" )), .SDcols=c("V1","V2")]
но это присваивает 1 всем наблюдениям, если в данных есть A, и я знаю, что это неверно, поскольку приложение предоставит вектор. Кроме того, «максимальный» способ сделать это кажется грязным. Как я могу сказать: «Если какой-либо из этих столбцов начинается с A, тогда сделайте переменную letterA равной 1 и 0 в противном случае»?