R:列之间的计算

时间:2014-11-06 13:12:57

标签: r

我有以下数据。

> dat<-read.csv("datafile.csv",sep=",")
> dat
        V1      V2       V4       V5
1 908.1000 0.61884 2967.937 746.8904
2 914.2944 0.60927 2665.044 691.8030
3 920.4887 0.60038 2635.653 723.0173
>

我想按如下方式计算V6: -

V6 =((V2-V5)/(V4-V5))* 100

但我不知道如何用R.做到这一点。 对不起,尝试使用像某些线程中找到的lapply等功能但到目前为止没有成功。 任何建议都非常受欢迎。

感谢, - 我们

2 个答案:

答案 0 :(得分:2)

试试这个

(dat <- transform(dat, V6 = ((V2-V5)/(V4-V5))*100))
#         V1      V2       V4       V5        V6
# 1 908.1000 0.61884 2967.937 746.8904 -33.60000
# 2 914.2944 0.60927 2665.044 691.8030 -35.02835
# 3 920.4887 0.60038 2635.653 723.0173 -37.77075

只是为了一般知识,您可以使用data.table

来引用修改对象(不创建不必要的副本)
library(data.table)
(setDT(dat)[, V6 := ((V2-V5)/(V4-V5))*100])
#          V1      V2       V4       V5        V6
# 1: 908.1000 0.61884 2967.937 746.8904 -33.60000
# 2: 914.2944 0.60927 2665.044 691.8030 -35.02835
# 3: 920.4887 0.60038 2635.653 723.0173 -37.77075

答案 1 :(得分:2)

尝试:

> dat$V6 = with(dat, ((V2-V5)/(V4-V5))*100)
> dat
        V1      V2       V4       V5        V6
1 908.1000 0.61884 2967.937 746.8904 -33.60000
2 914.2944 0.60927 2665.044 691.8030 -35.02835
3 920.4887 0.60038 2635.653 723.0173 -37.77075