我试图计算某段时间内某些天没有任何数据的变化百分比。我遇到的问题是Delt功能会产生NA(我猜测因为我错过了日期?)
代码看起来像这样:
Date <- c("6/1/2015", "6/3/2015", "6/4/2015", "6/5/2015", "6/8/2015")
variable <- c(4,7,10,22,3)
df <- data.frame(Date, variable)
df$Date <- as.Date(df$Date, "%m/%d/%Y")
df
library(plyr)
library(quantmod)
perct.Change <- ddply(df, "Date", transform,
Daily.Change = round(Delt(variable)*100,1))
,数据如下:
Date variable Delt.1.arithmetic
1 2015-06-01 4 NA
2 2015-06-03 7 NA
3 2015-06-04 10 NA
4 2015-06-05 22 NA
5 2015-06-08 3 NA
答案 0 :(得分:0)
我认为ddply
函数的运行方式与您认为的不同 - 它在每个时间点将Delt
应用于数据框并返回NA
,因为它始终是时间序列中Delt
的第一个输出。
你可能想要这样的东西:
df$change <- Delt(df$variable) / c(0, as.numeric(diff(df$Date)))
我们计算了Delt,然后将它除以度量之间的天数差异。
答案 1 :(得分:0)
您可以尝试以下方法:
> changes
[,1]
2015-06-01 NA
2015-06-03 3
2015-06-04 3
2015-06-05 12
2015-06-08 -19
有了这个,我获得了:
lag()
这些是每天的绝对变化。要将这些每日绝对更改转换为每日百分比更改,可以使用 perc_change <- round(changes/lag(df,1)*100,2)
函数转移原始时间序列的条目:
> perc_change
[,1]
2015-06-01 NA
2015-06-03 75.00
2015-06-04 42.86
2015-06-05 120.00
2015-06-08 -86.36
这会产生:
@Rest(rootUrl = "your_url", converters = FormHttpMessageConverter.class)
public interface UploadClient extends RestClientHeaders {
@Post("/Image/{id}")
@RequiresHeader(HttpHeaders.CONTENT_TYPE)
String uploadImage(int id, MultiValueMap<String, Object> data);
}
希望这有帮助。