我目前正在处理一个包含从WRDS提取的几个变量的数据集。数据包含有关公司(GVKEY),资产回报率(ROA)和会计年度(FYEAR)的信息。我想计算每个公司的每个年的ROA变化。该数据框由大约4000家公司组成,并有一些公司年的观察结果。数据框(df_industry)如下所示:
GVKEY FYEAR ROA
100 2001 0.34
100 2002 0.33
100 2003 0.66
100 2004 0.49
100 2005 0.20
202 2001 0.34
202 2004 0.99
202 2005 0.12
202 2006 0.78
202 2007 0.23
202 2008 0.89
我已经使用dplyr软件包尝试了几种解决方案,例如汇总和变异,但是尽管已按GVKEY分组,但它们似乎仍继续进行计算。
df_industry %>% group_by(FYEAR) %>% mutate(roa_difference = ROA - lag(ROA))
我想添加一列(roa_difference),以计算与上一年的ROA差异,如果没有上一年的数据来显示NA。无论公司如何,当前结果都将继续计算,从而导致初次观察新公司的数据不正确。
答案 0 :(得分:1)
您几乎是正确的,您要group_by compagny否? 这段代码是否适合您的需求:
df <- data.frame(GVKEY = rep(100, 4), FYEAR = seq(2001, 2004, 1), ROA = c(0.34, 0.33, 0.66, 0.49))
df %>%
arrange(FYEAR) %>%
group_by(GVKEY) %>%
mutate(roa_difference = ROA - lag(ROA))