【发布时间】:2019-02-24 02:49:38
【问题描述】:
我在创建新变量Growth 时遇到问题,它等于以“2”和“7”结尾的最近年份之间Population 的百分比变化。
# dt
ID Population year
1 50 1995
1 60 1996
1 70 1997
1 80 1998
1 90 1999
1 100 2000
1 105 2001
1 110 2002
1 120 2003
1 130 2004
1 140 2005
1 150 2006
1 200 2007
1 300 2008
dt <- data.table::fread("ID Population year
1 50 1995
1 60 1996
1 70 1997
1 80 1998
1 90 1999
1 100 2000
1 105 2001
1 110 2002
1 120 2003
1 130 2004
1 140 2005
1 150 2006
1 200 2007
1 300 2008", header = T)
增长 = 以“2”和“7”结尾的最近年份之间流行音乐的百分比变化。例如,在这一年:
1996 年:(1997 年流行音乐 – 1992 年流行音乐)/ 1992 年流行音乐
1997 年:(2002 年流行音乐 – 1997 年流行音乐)/ 1997 年流行音乐
1998 年:(2002 年流行音乐 – 1997 年流行音乐)/ 1997 年流行音乐
1999 年:(2002 年流行音乐 – 1997 年流行音乐)/ 1997 年流行音乐
2000 年:(2002 年流行音乐 – 1997 年流行音乐)/ 1997 年流行音乐
2001 年:(2002 年流行音乐 – 1997 年流行音乐)/ 1997 年流行音乐
2002:(2007 流行 - 2002 流行)/ 2002 流行
2003 年:(2007 年流行音乐 – 2002 年流行音乐)/ 2002 年流行音乐
2004 年:(2007 年流行音乐 – 2002 年流行音乐)/ 2002 年流行音乐
2005 年:(2007 年流行音乐 – 2002 年流行音乐)/ 2002 年流行音乐
2006 年:(2007 年流行音乐 – 2002 年流行音乐)/ 2002 年流行音乐
2007:(2012 流行 - 2007 流行)/ 2007 流行
2008:(2012 流行 - 2007 流行)/2007 流行
但是,当我操作Growth 时,我需要按列ID 执行此操作。而且,年份的范围是从1970年到2018年,范围很广。我如何在data.table 中做到这一点?
【问题讨论】:
-
在您的示例中,1992 Pop 不存在,那么您将如何计算 1996 的
Growth? 2012 流行音乐也不存在
标签: r data.table data-manipulation