У меня есть data.table
, dt:
dt
Id v1 v2 v3 x1 x2 x3
1 7 1 3 5 6 8
2 1 3 5 6 8 5
3 3 5 6 8 5 1
v1, v2, v3 и x1, x2, x3 - числовые c переменные
Я хочу вычесть ' x 'столбцов из столбцов' v ', т.е. вычислить различия v1 - x1
, v2 - x2
, et c. В моих реальных данных у меня может быть сотни таких пар переменных.
Желаемый результат:
dt
Id v1 v2 v3 x1 x2 x3 diff1 diff2 diff3
1 7 1 3 5 6 8 -2 -4 -3
2 1 3 5 6 8 5 -5 -5 0
3 3 5 6 8 5 1 -3 0 5
Я пробовал следующее:
newnames <- paste0("diff", 1:3)
v <- paste0("v", 1:3)
x <- paste0("x", 1:3)
dt[ , c(newnames) := get(v) - get(x)]
Однако в результате получается 3 одинаковых столбца, все из которых содержат разницу v1 - x1
.
Я знаю, что возможное решение - что-то вроде
dt[ , .(v1 - x1, v2 - x2, v3 - x3)]
Однако это довольно длинный код с возможным множеством опечаток, если мне нужно ввести 100 имен, не таких простых, как v1 и x1.
Надеюсь, вы поможете мне.