简单的数据框中的数据功能

时间:2017-04-04 10:37:06

标签: r dataframe

我的例子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
}

我需要申请功能吗?或者我错过了一些逗号或括号?

1 个答案:

答案 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