我有一张包含五列数据的表,分别是年份、GDP、收入、利润和工资。我用以下代码对这张表进行了计算。
library(dplyr)
#DATA
TEST<-data.frame(
Year= c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021),
GDP =c(8634,5798,6022,6002,6266,6478,6732,7224,6956,6968,7098,7620,7642,8203,9856,20328,22364,22222,23250,25250,26250,27250),
Revenue =c(8734,5798,7011,7002,7177,7478,7731,7114,7957,7978,7098,7710,7742,8203,9857,10328,11374,12211,13150,15150,17150,17150),
Income =c(8834,5898,6033,6002,6366,6488,6833,8334,6956,6968,8098,8630,8642,8203,9856,30328,33364,32233,33350,35350,36350,38350),
Wages =c(8834,5598,8044,8002,8488,8458,8534,5444,8958,8988,5098,5840,5842,8203,9858,40328,44384,42244,43450,45450,48450,45450)
)
#CALCULATION
ESTIMATION_0<-data.frame(mutate(TEST,
ETR_Revenue=(Revenue/GDP),
ETR_Income=(Income/GDP),
ETR_Wages=(Wages/GDP)
))
View(ESTIMATION_0)
但我的意图是通过自己的函数进行代码优化,例如fun2 <- function(x,y){((x/y))},其可以将收入与GDP、收入与GDP等进行除法运算。是否有人能够帮我解决这个问题?
fun2 <- function(dat) within(df, { ETR_Revenue <- Revenue/GDP; ETR_Income <- Income/GDP; ETR_Wages <- Wages/GDP; })
这样的东西吗?这是可行的,但有点问题,因为它严重依赖于框架的列名;另一种选择可以使用fun3 <- function(rev, inc, wag, gdp) { data.frame(ETR_rev=rev/gdp, ...); }
,在这种情况下,您将使用fun3(dat$rev, dat$inc, ...)
调用它,并获取返回值并cbind
它。但我有点跑题了... - r2evans