首先,让我们把您的问题重复性:
df <- data.frame(case = 1:12,
x = seq(10, 120, by = 10),
y = seq(0.5, 1.6, by = 0.1),
z = seq(100, 210, by = 10))
head(df)
# case x y z
# 1 1 10 0.5 100
# 2 2 20 0.6 110
# 3 3 30 0.7 120
# 4 4 40 0.8 130
# 5 5 50 0.9 140
# 6 6 60 1.0 150
然后,我们可以这样解决了传统方式:
df$calc1 <- df$x * df$y
df$calc2 <- df$z/df$y
df$calc3 <- df$z + df$x
head(df)
# case x y z calc1 calc2 calc3
# 1 1 10 0.5 100 5 200.0000 110
# 2 2 20 0.6 110 12 183.3333 130
# 3 3 30 0.7 120 21 171.4286 150
# 4 4 40 0.8 130 32 162.5000 170
# 5 5 50 0.9 140 45 155.5556 190
# 6 6 60 1.0 150 60 150.0000 210
或者,你可以使用transform
:
transform(df, calc1 = x/y, calc2 = z/y, calc3 = z + x)
请阅读关于[如何提出一个好问题]的信息(http://stackoverflow.com/help/how-to-ask)以及如何给出一个[r eproducible例子](http://stackoverflow.com/questions/5963269)。这会让其他人更容易帮助你。 – zx8754
@ zx8754我现在又增加了从Excel数据表中的计算的图像,使我的问题更加清晰。试图把我的查询。 – Ravikk
假设你的输入数据框被命名为* DF1 *,我们可以计算出* CALC1 *为:'$ DF1 CALC1 < - DF1 $ X * $ DF1 Y',对于* CALC2 *:'$ DF1 CALC2 < - DF1 $ Z/DF1 $ Y',* Calc3 *:'df1 $ Calc3 < - df1 $ Z + df1 $ X'。 – zx8754