【发布时间】:2020-01-20 14:36:22
【问题描述】:
新手:我有一个数据集,我想在其中计算一家公司的销售额同比增长。数据集包含大约。 1000 家在公共证券交易所上市的不同年份的公司。数据如下所示:
# gvkey fyear at company name
#22 17436 2010 59393 BASF SE
#23 17436 2011 61175 BASF SE
#24 17436 2012 64327 BASF SE
...
#30 17436 2018 86556 BASF SE
#31 17828 1989 62737 DAIMLER AG
#32 17828 1990 67339 DAIMLER AG
#33 17828 1991 75714 DAIMLER AG
...
#60 17828 2018 281619 DAIMLER AG
我想创建一个新列 growth,在其中计算 at 的百分比增加,例如BASF SE (gvkey 17436) 从 2010 年到 2011 年,到 2012 年等等。在第 31 行,条件语句应该起作用,它不会根据属于 BASF 的值而是具有 NA 值来计算增加。因此,第 32 行新列“增长”的下一个值将是 DAIMLER (gvkey 17828) 从 62727 到 67339 的百分比增长
到目前为止我尝试过:
if TA$gvkey == lag(TA$gvkey) {mutate(TA, growth = (at - lag(at))/lag(at))} else {NULL}
基本上,我尝试根据 gvkey 标识符的更改来调整计算,因为这对我来说最有意义。我相信有一种更好的方法可以运行一个循环,直到 gvkey 更改并继续使用下一组值 - 但我根本不知道如何编写代码。
我对 R 很陌生,很迷茫。我会感谢每一个支持!谢谢各位:)
【问题讨论】:
标签: r if-statement time-series conditional-statements