比较元素并创建新列

时间:2016-01-21 13:00:49

标签: r

我想比较第二列的i和i + 1元素(收盘价),如果i<i+1将第1列放在第三列。但我不知道该怎么做。

require(quantmod)
getSymbols("GOOG",src="yahoo")
data<-last(GOOG,40)
newdata<-data.frame(data[,4])
newdata

2 个答案:

答案 0 :(得分:4)

试试这个: newdata $ closePrice = c((diff(newdata [,1])&lt; 0)* 1,0) 说明: diff(newdata [,1])将返回行i + 1和i的差异 &lt; 0将给出可以转换为1或0的真或假数组 由于结果将是一个元素短,所以最后连接一个0

答案 1 :(得分:2)

使用dplyr lead/lag功能:

library(dplyr)

#dummy data
set.seed(123)
mydf <- data.frame(price = runif(5))

#result
mydf %>% 
  mutate(price_lead = lead(price),
         compare = ifelse(price < price_lead, 1, 0))

#output
#       price price_lead compare
# 1 0.2875775  0.7883051       1
# 2 0.7883051  0.4089769       0
# 3 0.4089769  0.8830174       1
# 4 0.8830174  0.9404673       1
# 5 0.9404673         NA      NA