Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r的百分比变化_R - Fatal编程技术网

r的百分比变化

r的百分比变化,r,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,

我正在尝试获取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.
# ...

df如果您希望基于上一年每年的百分比变化,那么这应该是可行的

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
您是否在寻找2007年至2017年每种房间类型的价格变化百分比?如果是这样,那么您的data.frame中还有一个维度:
year
。但是,此data.frame可以在布局中进行转换,从2007年到2017年,每种房间类型的价格每月都会增加百分比