【发布时间】:2011-10-16 06:33:13
【问题描述】:
我想将数据框中的几列乘以一个值向量。值的特定向量会根据另一列中的值而变化。
--编辑--
如果我让数据集更复杂,即超过 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))
但我无法将子集数据框返回到原始数据框。有没有什么方法可以在不对数据框进行子集化的情况下执行此操作,从而保留其他列(例如,Treatment、Species)?
【问题讨论】:
标签: r vector subset multiplication