【发布时间】:2020-12-28 12:43:31
【问题描述】:
我有以下数据框(df1)。此数据框包含一个名为“平均值”的行,其中包含每列的平均值。
GDP per_capita
France 2 5
Spain 4 10
Italy 6 15
Mean 4 10
我想创建一个复制 df1 列的函数,每个新列的值是每个单元格的减法减去其各自的平均值,再除以它的平均值。像这样:
GDP per_capita GDP_diff per_capita_diff
France 2 5 (2-4)/4 (5-10)/10
Spain 4 10 (4-4)/4 (10-10)/10
Italy 6 15 (6-4)/4 (15-10)/10
Mean 4 10 (4-4)/4 (10-10)/10
所以最后应该是这样的:
GDP per_capita GDP_diff per_capita_diff
France 2 5 -0.5 -0.5
Spain 4 10 0 0
Italy 6 15 0.5 0.5
Mean 4 10 0 0
我必须假设将使用此函数的每个数据帧都有一个名为“平均值”的行。 到目前为止,这就是我所拥有的:
new.function <- function(df){
name.df= colnames(df)
new.df = apply(df, FUN = function(x) (x-Mean)/Mean, MARGIN = 2)
colnames(new.df) = paste(name.df,"diff",sep ="_")
result = cbind(df,new.df)
return(result)
}
但是我得到的输出都是错误的。它不像我想要的那样做减法或除法。
【问题讨论】: