嗨,我有一个面板数据,其中包含 3 列:Firm、Year、Income。
Firm <- rep(c("AAA", "BBB", "CCC", "DDD", "EEE"), each = 20)
Year <- rep(seq(1997, 2016, 1), times = 5)
Income <- rnorm(100, mean = 50, sd = 10)
df <- cbind(Firm, Year, Income)
实际数据包含 5000 多家公司和每家公司超过 50 年的数据。但这是一个足够好的例子。
我想分别将 quintile 分配给所有公司每年的收入,并将其放在一个名为 的新列中Quint。例如,对于 1997 年,公司AAA获得收入 50,公司BBB获得收入 49,公司CCC获得收入 48,公司DDD获得收入 47,公司EEE获得收入 46。所以公司AAA获得 1,BBB获得 2,CCC获得 3,DDD获得 4,EEE获得 5 , 1997 年。
我有一个自定义功能,可以多年来一直执行,但每年都无法执行:
quan <- function (x){
y <-ifelse(x <= quantile(x, c(.2), na.rm = TRUE), 1,
ifelse(x > quantile(x, c(.2), na.rm = TRUE) & x <= quantile(x, c(.4), na.rm = TRUE), 2,
ifelse(x > quantile(x, c(.4), na.rm = TRUE) & x <= quantile(x, c(.6), na.rm = TRUE), 3,
ifelse(x > quantile(x, c(.6), na.rm = TRUE) & x <= quantile(x, c(.8), na.rm = TRUE), 4,
ifelse(x > quantile(x, c(.8), na.rm = TRUE), 5, NA)))))
y
}
每年怎么做?谢谢。