嗨,我有一个面板数据,其中包含 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
}
每年怎么做?谢谢。