列条目的操作

时间:2015-04-03 09:35:02

标签: r excel

我想在列上执行类似Excel的操作。之前已经问过这个问题,例如:Excel like column operations in R dataframe

但是我找不到所有有用的答案,因为我不想为每个1700+行指定操作。所以我的问题是:

我有两列DataClose。我想要另一个列log(x_{n+1}/x_n) n=1,...,1719x_i Close(第2列)。链接中的答案建议根据行号指定操作,但我不能花时间为1720行做这些操作。

以下是该问题的其他一些答案,我不明白:http://r.789695.n4.nabble.com/Log-difference-in-a-dataframe-column-td3221225.html

使用as.ts不起作用,结果只有0.我需要像

这样的东西
> df$LReturn <- log(df$Close / df$Close)

指定此新列中的第一个条目为1,其他所有条目均为(n+1):th上的n:th

2 个答案:

答案 0 :(得分:2)

试试这个:

library(Hmisc)

set.seed(3)
df = data.frame(date=1:10, close=25+rnorm(10))
df$Lreturn = log(df$close/Lag(df$close,1))

#   date    close      Lreturn
#1     1 24.03807           NA
#2     2 24.70747  0.027467119
#3     3 25.25879  0.022068343
#4     4 23.84787 -0.057479317
#5     5 25.19578  0.054981806
#6     6 25.03012 -0.006596575 
#7     7 25.08542  0.002206653
#8     8 26.11661  0.040284808
#9     9 23.78114 -0.093678580 
#10   10 26.26737  0.099434498  

您也可以执行此基础R

df$LreturnBaseR = log(c(df$close[-1],NA)/df$close)

答案 1 :(得分:1)

应用日志属性和base diff函数:

df$LrReturn<-c(diff(log(df$close)),NA)