#r
#r
Вопрос:
dt <- data.table(dummy=rep(c(0:1),each= 10), piece = rep(c(3:4)), values1=c(10:29), values2=c(20:39))
У меня есть такая таблица данных. Я хочу добиться: если dummy = 0, то создайте новый столбец в этой таблице данных, у которого new_value1 = (values1 values2) * piece; если dummy = 1, то создайте еще один новый столбец, у которого new_value2 = value1 value2 * piece как я могу реализовать это, используя цикл в r?
Спасибо!
Комментарии:
1. Есть сомнения. Для строк, которые равны 1 для фиктивного 0, new_value1 будет
NA
?
Ответ №1:
Мы указываем условие в i
и создаем эти столбцы в j
library(data.table)
dt[dummy == 0, new_value1 := (values1 values2) * piece
][dummy == 1, new_value2 := (values1 values2) * piece]
Или другой вариант dcast
dt[, new_value := (values1 values2) * piece]
dcast(dt, seq_len(nrow(dt)) piece values1 values2 ~
paste0('new_value', match(dummy, unique(dummy))))