如何通过总和(获取百分比)对数据框值进行归一化

Sky*_*ker 5 aggregate r dataframe data.table

我有以下数据框:

> str(df)
 'data.frame':  52 obs. of  3 variables:
  $ n    : int  10 20 64 108 128 144 256 320 404 512 ...
  $ step : Factor w/ 4 levels "Step1","Step2",..: 1 1 1 1 1 1 1 1 1 1 ...
  $ value: num  0.00178 0.000956 0.001613 0.001998 0.002975 ...
Run Code Online (Sandbox Code Playgroud)

现在我想归一化/除以df$value属于同一个 n 的值的总和,这样我就可以得到百分比。这不起作用,但显示了我想要实现的目标。在这里,我将属于相同 n 的值的总和预先计算到 dfa 中,并尝试将原始值除以匹配df$value的聚合总数:dfa$valuen

dfa <- aggregate(x=df$value, by=list(df$n), FUN=sum)
names(dfa)[names(dfa)=="Group.1"] <- "n"           
names(dfa)[names(dfa)=="x"] <- "value"
df$value <- df$value / dfa[dfa$n==df$n,][[1]]
Run Code Online (Sandbox Code Playgroud)

Blu*_*ter 5

我认为以下工作,使用 package data.table

df <- data.table(df)
df[,value2 := value/sum(value),by=n]
Run Code Online (Sandbox Code Playgroud)

  • `data.table` 扩展了 `data.frame`,因此您可以对数据框执行的任何操作都可以对数据表执行。您甚至可以在执行此操作后将其转换回数据帧。 (3认同)