【发布时间】:2019-05-07 04:37:36
【问题描述】:
我有一个数据框 df。
30 列,约 150 万行。
我想通过将这些列中的每个数字除以该列的平均值来“标准化”第 13 到 30 列。我可以这样做:
df_norm[, 13] <- df[, 13] / Column_Means[1]
df_norm[, 14] <- df[, 14] / Column_Means[2]
df_norm[, 15] <- df[, 15] / Column_Means[3]
...etc...etc...etc..
df_norm[, 29] <- df[, 29] / Column_Means[17]
df_norm[, 30] <- df[, 30] / Column_Means[18]
它可以工作,但它很笨拙而且有点慢。我曾希望在一行中完成所有操作,可能是这样的:
df_norm[, 13:30] <- df[, 13:30] / Column_Means
或
df_norm[, 13:30] <- df[, 13:30] / Column_Means[1:18]
但这似乎不起作用 - 它总是除以 Column_Means[1] 而不是遍历所有 18 个值。
请有人告诉我是否有一行代码可以满足我的需要?如果可以的话,我喜欢写简洁的代码,但我对 R 的语法有点新手。
非常感谢...
【问题讨论】:
-
df_norm[,13:30]<-lapply(df[,13:30],function(x) x/mean(x)).