到目前为止我做了什么:
read.csv("filename.csv", header=TRUE)
df$header1
df$header2
现在我要计算变化率:Header1是Dates,Header2是价格 所有值的日期变化率与前一日期相比。
我想生成两个单独的Change of Change列,在另一个文件上执行相同的操作。
一旦两个数据集都有可用的变化率,我会查找每个日期的净变化率。
我现在的位置:
df<-read.csv("audusd.csv", head = TRUE)
df$Date
df$Close
rate<- 100*diff(df$Close/df[-nrow(df),]$Close
执行,然后我得到这个:
> rate<- 100*diff(df$Close/df[-nrow(df),]$Close
+
+
在控制台中。
感谢所有帮助,请进一步帮助。 :)
另外,我对是否可以将结果存入文件感到困惑?或者我每次都要运行代码吗?
如果我能理解并开始使用它,这肯定会对我的工作有所帮助。
答案 0 :(得分:3)
您还可以使用diff(...)
函数,它可以避免循环遍历行:
rate <- 100*diff(df$price)/df[-nrow(df),]$price
diff(...)
计算差异行(n) - 行(n-1)。 df[-nrow(df),]
会返回df
除最后一行之外的所有行。
以下是工作代码的完整示例。
# all this just to get sample data.
# daily close for AAPL from 2013.01.01 - today
library(tseries)
library(zoo)
ts <- get.hist.quote(instrument="AAPL",
start="2013-01-01", end="2014-01-01",
quote="AdjClose", provider="yahoo", origin="1970-01-01",
compression="d", retclass="zoo")
df <- data.frame(ts)
df <- data.frame(date=as.Date(rownames(df)),price=df$AdjClose)
df <- df[!is.na(df$price),]
# calculate daily rate of change...
rate <- 100*diff(df$price)/df[-nrow(df),]$price
plot(df[-nrow(df),]$date,rate,type="l",xlab="2013",ylab="Pct. Change",main="APPL")
答案 1 :(得分:0)
鉴于你在评论中所说的如何在excel中这样做是R等价物。
dataset=(1:10)^3 #Data in your case one of your columns
ratedata=NULL # Something you have to do so R can put data in this object
for(i in 1:(length(dataset)-1)){ratedata[i]=(dataset[i+1]-dataset[i])/dataset[i]*100} # A simple for function doing what you specified.
ratedata # Returning the rate data so you can look at it
仅供参考:这只适用于您定期的时间。