2017-02-15 1 views
0

Ich habe eine Liste von Symbolen in einer CSV-Datei und ich möchte für diejenigen mit Schlusskurs höher als 5 zu überprüfen.Wie verwende ich Cl() mit Zeichen?

Ich habe bereits getSymbols für alle Elemente in der CSV-Datei ausgeführt.

Mein Test läuft hier in Fehler. Ich denke, das liegt daran, dass Cl() keine Zeichen als Argumente akzeptiert. Wie kann ich Zeichen in xts umwandeln?

> library(quantmod) 

> passingset 
     V1 
1  AAB 
2 AAR-UN 
3  AAV 
4  ABT 
5  ABX 
     (...) 

> class(passingset) 
[1] "data.frame" 
> class(passingset$V1) 
[1] "character" 


> #Remove closing price < 5 
> for (i in 1:nrow(passingset)){ 
+ company <- passingset$V1[i] 
+ if(Cl(company)[length(Cl(company))] < 5){ 
+  passingset <- passingset[!(passingset$V1 == company),, drop = FALSE] 
+ } else 
+  i = i + 1 
+ 
+ rm(company) 
+ } 
**Error in Cl(company) : 
    subscript out of bounds: no column name containing "Close"** 

Antwort

1

Keine Notwendigkeit für Schleifen! Vorausgesetzt, dass Sie die Preisreihe mit getSymbols gelesen haben, wie Sie oben dann erwähnt:

# an example set of tickers: 
pasingset <- data.frame(V1=c('CWB','EEM','VTI','NAK','GIG'),stringsAsFactors = F) 

# this gets you the last closings of your tickers 
lastClose <- sapply(pasingset$V1,function(x) xts::last(Cl(get(x)))) 

# shows the tickers which have a close > 5 
pasingset$V1[which(lastClose > 5)] 
[1] "CWB" "EEM" "VTI" 
+0

@hvollmerier vielen Dank! Wenn ich die zweite Zeile Ihres Codes versuche, gibt es mir immer noch "Fehler in get (x): ungültiges erstes Argument". Ist Ihnen das schon einmal begegnet? – Montosh123

+0

@hotterthanmath, da die Funktion 'last' von mehreren Paketen verwendet wird, kann ich nur davon ausgehen, dass Sie möglicherweise andere Pakete geladen haben, die eine Funktion mit dem gleichen Namen verwenden. Um sicherzustellen, dass die Funktion aus dem 'xts-Paket' verwendet wird, schreibe 'xts :: last' statt' 'last' ', wie ich es bearbeitet habe. Ein anderes mögliches Problem könnte sein, dass Ihre csv-Datei nicht die gleichen Struktur-/Spaltennamen wie eine heruntergeladene Datei von Yahoo hat. Um den Download der exakt gleichen Ticker wie in meinem Beispiel mit 'getSymbols' von Yahoo zu überprüfen. Sie sollten keinen Fehler sehen. – hvollmeier