将一列中的值除以R中另一列中的值

时间:2016-09-11 21:22:03

标签: r

我已经阅读了如何将一列中的值除以R中另一列中的值。但我想知道如何将多列中的值除以单列中的值。我的第一栏也是由非数字组成的。如何在R中编写脚本来完成所有这些并避免使用非数字?

我想在下面的.csv文档中将smallestHDL除以HDW

SVL

2 个答案:

答案 0 :(得分:1)

我喜欢这个东西的dplyr包。鉴于您已将数据作为csv读入,因此使用mutate命令将新列定义为其他列的功能很容易。 e.g。

require(dplyr)
mydata<-tbl_df(mydata) #Make it into a tbl class
#Define the new columns
mydata<-mydata%>%
  mutate(HDLSVL=HDL/SVL)%>%
  mutate(HDWSVL=HDW/SVL)

答案 1 :(得分:1)

以下是data.table的一个选项。我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (setDT(df1)),在.SDcols中指定感兴趣的列,循环显示(lapply(..)并将(/)除以&#39; SVL&#39;。

library(data.table)
setDT(df1)[, lapply(.SD, `/`, df1$SVL), .SDcols = HDL:HDW]

如果我们需要根据划分的输出创建新列,那么

setDT(df1)[, paste0(names(df1)[3:4],"_SVL") := lapply(.SD, `/`, df1$SVL), .SDcols = HDL:HDW]