Как добавить цикл в таблицу данных для каждой строки в r?

#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))))