我有这样的数据,其中一些"名称"出现超过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) 我正在构建一个交易策略,我被困在两个关键领域.当使用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的新手,我在数据集上使用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) 我可以使用一些帮助让我的代码正常工作.我试图根据收盘价高于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)