Я хочу обновить значения в некоторых указанных столбцах таблицы данных на основе внешних значений из другой таблицы данных.Обновить значения в указанных столбцах на основе таблицы внешних данных
Я знаю, как сделать эту переменную переменной, но я хотел более эффективное решение, которое я могу автоматизировать, возможно, с помощью lapply
UPDATE: Мои данные набор (эквивалент mtcars
в приведенном ниже примере), имеют другие столбцы, которые я не хочу обновлять.
Для воспроизводимым например, запустить этот фрагмент кода первого
# Load library
library(data.table)
# load data
data(mtcars)
# create another Data Table which we'll use as external reference
# this table shows the number of decimals of those variables we want to modify in mtcars
var <- c("mpg","disp","hp")
Decimal <- c(1,3,2)
DT <- cbind.data.frame(var, Decimal)
# convert into data.table
setDT(DT)
setDT(mtcars)
Мой код, обновляя столбец за столбцом
mtcars[, mpg := mpg/10^DT[var=="mpg", Decimal] ]
mtcars[, disp := disp/10^DT[var=="disp", Decimal] ]
mtcars[, hp := hp /10^DT[var=="hp", Decimal] ]
Этот код работает отлично, и это дает желаемый результат.
Желаемая Result
Первый ряд mtcars
используется выглядеть следующим образом:
> mpg disp hp
> 1: 21.0 160 110
и теперь он выглядит следующим образом:
> mpg disp hp
> 1: 2.10 0.160 1.10
Есть ли более эффективное решение с использованием function
, lapply
и т. Д.?
Я должен был быть яснее, @akrun. Теперь он работает отлично! –
@ RafaelPereira Спасибо за отзыв. – akrun