r的百分比变化

时间:2019-07-22 10:57:55

标签: r

我正在尝试从2007年到2017年获得不同单位类型的百分比变化,但是由于单位类型不同,我仍然遇到困难。有没有一种方法可以不必根据平面类型拆分数据集?

这是我的数据

df <- structure(list(year = c(2007, 2008, 2012, 2013, 2014, 2015, 2016, 
2017, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017), month = c(3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 
6, 6, 6, 6, 6), flat_type = c("ROOM", "ROOM", "ROOM", "ROOM", 
"ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", 
"ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", 
"ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", "ROOM", 
"ROOM", "ROOM", "EXECUTIVE", "EXECUTIVE", "EXECUTIVE", "EXECUTIVE", 
"EXECUTIVE", "EXECUTIVE", "EXECUTIVE", "EXECUTIVE", "EXECUTIVE", 
"EXECUTIVE", "EXECUTIVE"), resale_price = c(181501.9, 226442.7, 
351345.4, 361936, 341007.6, 324761.4, 322473.7, 317472.8, 254604.3, 
308748.2, 331897.9, 372573.7, 422734.9, 456295.2, 479260.6, 444921, 
433627.4, 434478.6, 436740.4, 327557.1, 389542.4, 403023.5, 454304, 
501826, 542171.7, 568800.3, 536064.5, 515018.3, 522708.5, 532786.5, 
384763.4, 458551.2, 471082.1, 522055.9, 577826, 629253.4, 661299.9, 
639124.5, 620677.2, 624047.6, 627632.2)), .Names = c("year", 
"month", "flat_type", "resale_price"), row.names = c(NA, -41L
), class = "data.frame")


df
# year month flat_type resale_price
# 1  2007     3 ROOM           181502.
# 2  2008     3 ROOM           226443.
# 3  2012     3 ROOM           351345.
# 4  2013     3 ROOM           361936 
# 5  2014     3 ROOM           341008.
# 6  2015     3 ROOM           324761.
# 7  2016     3 ROOM           322474.
# ...

1 个答案:

答案 0 :(得分:0)

如果您希望每年根据上一年的百分比进行更改,则应该可以。

new=rep(0,nrow(df))
for (i in 2:nrow(df)){
 if (df[i,2]==df[i-1,2]){
  new[i]=(df[i,3]-df[i-1,3])/df[i-1,3]
 }
}
df[,ncol(df)+1]=new