Я хотел бы умножить несколько столбцов в моем фрейме данных на вектор значений.Конкретный вектор значений изменяется в зависимости от значения в другом столбце.
- РЕДАКТИРОВАТЬ -
Что если я сделаю набор данных более сложным, т. Е. Более 2 условий и условийслучайно перемешаны вокруг набора данных?
Вот пример моего набора данных:
df=data.frame(
Treatment=(rep(LETTERS[1:4],each=2)),
Species=rep(1:4,each=2),
Value1=c(0,0,1,3,4,2,0,0),
Value2=c(0,0,3,4,2,1,4,5),
Value3=c(0,2,4,5,2,1,4,5),
Condition=c("A","B","A","C","B","A","B","C")
)
, который выглядит следующим образом:
Treatment Species Value1 Value2 Value3 Condition
A 1 0 0 0 A
A 1 0 0 2 B
B 2 1 3 4 A
B 2 3 4 5 C
C 3 4 2 2 B
C 3 2 1 1 A
D 4 0 4 4 B
D 4 0 5 5 C
Если Condition=="A"
,Я хотел бы умножить столбцы 3-5 на вектор c(1,2,3)
.Если Condition=="B"
, я бы хотел умножить столбцы 3-5 на вектор c(4,5,6)
.Если Condition=="C"
, я бы хотел умножить столбцы 3-5 на вектор c(0,1,0)
.Таким образом, результирующий фрейм данных будет выглядеть так:
Treatment Species Value1 Value2 Value3 Condition
A 1 0 0 0 A
A 1 0 0 12 B
B 2 1 6 12 A
B 2 0 4 0 C
C 3 16 10 12 B
C 3 2 2 3 A
D 4 0 20 24 B
D 4 0 5 0 C
Я попытался установить подмножество фрейма данных и умножить его на вектор:
t(t(subset(df[,3:5],df[,6]=="A")) * c(1,2,3))
Но я не могу вернуть подмножество данныхрамка к оригиналу.Есть ли способ выполнить эту операцию без поднабора фрейма данных, чтобы другие столбцы (например, «Лечение», «Виды») были сохранены?