我的例子df:
a = c(2,2,4)
b = c(3,4,5)
c = c(3,5,7)
d = c(3,5,8)
df = data.frame(a, b, c, d)
我想将col b-d除以a列进行标准化。 像这样(对于col b的具体例子)
df$b <- df$b / df$a
但实际上我有很多专栏。所以我想使用一些循环。 像这样:
for (x in df[c(2:4)]){
df$x <- df$x / df$a
}
我需要申请功能吗?或者我错过了一些逗号或括号?
答案 0 :(得分:1)
以下是使用data.table
的选项。转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(df)
),指定.SDcols
中的列,将Data.table(.SD
)的子集除以&#39; a&#39;列并将(:=
)分配给感兴趣的列
library(data.table)
setDT(df)[, (2:4) := .SD/a,.SDcols = 2:4]
df
# a b c d
#1: 2 1.50 1.50 1.5
#2: 2 2.00 2.50 2.5
#3: 4 1.25 1.75 2.0