我已经阅读了如何将一列中的值除以R中另一列中的值。但我想知道如何将多列中的值除以单列中的值。我的第一栏也是由非数字组成的。如何在R中编写脚本来完成所有这些并避免使用非数字?
我想在下面的.csv文档中将smallest
和HDL
除以HDW
SVL
答案 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]