小编SJS*_*013的帖子

基于每组行数的子集数据帧

我有这样的数据,其中一些"名称"出现超过3次:

df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)

  name x
1    a 1
2    a 2
3    a 3
4    b 4
5    b 5
6    c 6
7    c 7
8    c 8
9    c 9
Run Code Online (Sandbox Code Playgroud)

我希望根据"name"变量的每个级别内的行数(观察值)对数据进行子集化(过滤).如果某个级别的"名称"出现超过3次,我想删除属于该级别的所有行.

我写了这段代码,但无法让它工作.

  name x
1    a 1
2    a 2
3    a 3
4    b 4
5    b 5
Run Code Online (Sandbox Code Playgroud)

r subset dataframe r-faq

23
推荐指数
2
解决办法
2万
查看次数

在R中创建交易信号

我正在构建一个交易策略,我被困在两个关键领域.当使用Stoch和MACD时quantmod,我试图创建一个信号,当慢速随机交叉快速随机(1),反之亦然(-1),并在(0)之间平坦.除了列名MACD和Signal之外,MACD代码是相同的.最后,当所有三个信号等于1,-1,0时,我试图合并三个信号以创建主信号.

library(quantmod)

####################
## BOLINGER BANDS ##
####################

getSymbols("SPY", src="yahoo", from="2013-01-01", to="2015-05-01")
x <- na.omit(merge(SPY, BBands(Cl(SPY))))

x$sig <- NA

# Flat where Close crossed the mavg
x$sig[c(FALSE, diff(sign(Cl(x) - x$mavg), na.pad=FALSE) != 0)] <- 0
x$sig[Cl(x) > x$up] <- -1 # short when Close is above up
x$sig[Cl(x) < x$dn] <- 1 # long when Close is below dn
x$sig[1] <- 0 # flat on the first day
x$sig[nrow(x)] <- 0 # flat on the last day

# …
Run Code Online (Sandbox Code Playgroud)

r trading quantmod

9
推荐指数
1
解决办法
2088
查看次数

错误:字符串必须是原子矢量R.

我是R的新手,我在数据集上使用stringr时遇到问题.我试图通过变量将数据与其中的单词"restaurant"进行子集化.我经常收到此错误消息.

str_detect(matrix(expandedDataFrame[1,12:21],1,
                 ncol(expandedDataFrame[,12:21])),"Restaurants")
Error: String must be an atomic vector
Run Code Online (Sandbox Code Playgroud)

r vector

3
推荐指数
1
解决办法
7974
查看次数

R Quant Trading

我可以使用一些帮助让我的代码正常工作.我试图根据收盘价高于MACD,布林带和慢速随机指标创建一个简单的头寸信号.我在第17行开始出错了.我不确定这是不是因为"Stock"是一个xts对象.我想在最后绘制输出图.谢谢!

#install.packages("quantmod")
library("quantmod")
#install.packages("FinancialInstrument")
library("FinancialInstrument")
#install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
#install.packages("TTR")
library("TTR")

#######################################

Stock <- get(getSymbols('CAT'))["2014::"]

# add the indicators
Stock$BBands <- BBands(HLC(Stock))
Stock$MACD <- MACD(HLC(Stock))
Stock$stochOSC <- stoch(Stock[,c("High","Low","Close")])
Stock$position <- ifelse(Cl(Stock) > Stock$BBands > Stock$MACD > Stock   $stockOSC , 1 , -1)

Gains <- lag(Stock$position) * dailyReturn(Stock)
charts.PerformanceSummary(cbind(dailyReturn(Stock),Gains))
Run Code Online (Sandbox Code Playgroud)

finance r trading algorithmic-trading quantmod

1
推荐指数
1
解决办法
703
查看次数