dt <- data.table(dummy=rep(c(0:1),каждый=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?
Спасибо!
Мы указываем условие в 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))))
Есть сомнения. Для строк, которые равны 1 для фиктивного 0, new_value1 будет
NA
?