У меня есть такие данные:
Это просто поддельные данные, которые я создаю:
# dt
Col1 Col2 Col3 Col4
2014/1/1 A 10 1
2014/4/1 A 15 1.5
2015/1/1 A 15 3
2015/4/1 A 30 4
2014/1/1 B 20 2
2014/4/1 B 30 6
2015/1/1 B 40 10
2015/4/1 B 80 16
Что я хочу:
Col1 Col2 Col3 Col4 Col3.R Col4.R
2014/1/1 A 10 1 1 1
2014/4/1 A 15 1.5 1.5 1.5
2015/1/1 A 15 3 1.5 3
2015/4/1 A 30 4 3 4
2014/1/1 B 20 2 1 1
2014/4/1 B 30 6 3/2 3
2015/1/1 B 40 10 2 5
2015/4/1 B 80 16 4 8
Новый столбец Col3.R
рассчитывается по значению col3
для каждой группы Col2
делится первое значение в каждой группе.То же, что и col4.R
.
Я пытаюсь код ниже:
dt[, sapply(.SD, function(x) R = x / x[1]), .SDcols = 3:4, by = .(Col2)]
Как сохранить исходные столбцы?Нужно ли использовать аргумент on
для data.table
?
Данные:
dt <- fread(" Col1 Col2 Col3 Col4
2014/1/1 A 10 1
2014/4/1 A 15 1.5
2015/1/1 A 15 3
2015/4/1 A 30 4
2014/1/1 B 20 2
2014/4/1 B 30 6
2015/1/1 B 40 10
2015/4/1 B 80 16", header = T)
dt$Col3 <- as.numeric(dt$Col3)