Ich habe einen Datenrahmen, der mehrere Spalten und Zeilen hat - einige enthalten Informationen, einige sind mit NA gefüllt, die mit bestimmten Daten ersetzt werden sollten.Sammeln von Daten mit R - mehrere URLs
Die Zeilen repräsentieren spezifische Instrumente und Spalten enthalten verschiedene Details des Instruments in einer bestimmten Zeile. Die letzte Spalte des Datenrahmen hat eine URL für jedes Instrument, das dann verwendet wird, um Daten für leere Spalten zu greifen:
Issuer NIN or ISIN Type Nominal Value # of Bonds Issue Volume Start Date End Date
1 NBRK KZW1KD079112 discount notes NA NA NA NA NA
2 NBRK KZW1KD079146 discount notes NA NA NA NA NA
3 NBRK KZW1KD079153 discount notes NA NA NA NA NA
4 NBRK KZW1KD089137 discount notes NA NA NA NA NA
URL
1 http://www.kase.kz/en/gsecs/show/NTK007_1911
2 http://www.kase.kz/en/gsecs/show/NTK007_1914
3 http://www.kase.kz/en/gsecs/show/NTK007_1915
4 http://www.kase.kz/en/gsecs/show/NTK008_1913
Zum Beispiel mit dem folgenden Code erhalte ich die Details für das erste Instrument in der Reihe NBRK KZW1KD079112
:
sp = readHTMLTable(newd$URL[[1]])
sp[[4]]
Welche der folgenden gibt:
V1
V2
1 Trading code NTK007_1911
2 List of securities official
3 System of quotation price
4 Unit of quotation nominal value percentage fraction
5 Quotation currency KZT
6 Quotation accuracy 4 characters
7 Trade lists admission date 04/21/17
8 Trade opening date 04/24/17
9 Trade lists exclusion date 04/28/17
10 Security <NA>
11 Bond's name short-term notes of the National Bank of the Republic of Kazakhstan
12 NSIN KZW1KD079112
13 Currency of issue and service KZT
14 Nominal value in issue's currency 100.00
15 Number of registered bonds 1,929,319,196
16 Number of bonds outstanding 1,929,319,196
17 Issue volume, KZT 192,931,919,600
18 Settlement basis (days in month/days in year) actual/365
19 Date of circulation start 04/21/17
20 Circulation term, days 7
21 Register fixation date at maturity 04/27/17
22 Principal repayment date 04/28/17
23 Paying agent Central securities depository JSC (Almaty)
24 Registrar Central securities depository JSC (Almaty)
Daraus werde ich nur halten haben:
14 Nominal value in issue's currency 100.00
16 Number of bonds outstanding 1,929,319,196
17 Issue volume, KZT 192,931,919,600
19 Date of circulation start 04/21/17
22 Principal repayment date 04/28/17
Ich werde dann die benötigten Daten in den ursprünglichen Datenrahmen kopieren und mit der nächsten Zeile fortfahren ... Der Datenrahmen besteht aus mehr als 100 Zeilen und wird sich ständig ändern.
Ich würde jede Hilfe zu schätzen wissen.
UPDATE:
Sieht aus wie die Daten, die ich nicht immer in sp[[4]]
müssen. Manchmal ist es , vielleicht in der Zukunft wird es völlig andere Tabelle sein. Gibt es eine Möglichkeit, die für die Informationen in den Tabellen geschabt und identifiziert eine bestimmte Tabelle sucht, die weiter verwendet werden könnten, um Daten zu sammeln ?:
sp = readHTMLTable(newd$URL[[1]])
sp[[4]]
Vielen Dank. Ihr Code funktioniert, aber wenn ich versuche, ihn für alle Instrumente auszuführen, erhalte ich den folgenden Fehler: 'Fehler in' $ <-. Data.frame' ('* tmp *', "name", value = " KZW1KD919127 "): Ersatz hat 1 Zeile, Daten 0 ' Irgendwelche Ideen, warum das passiert? – AK88
Hmmm ... Ich habe gerade dieses spezielle Instrument untersucht und festgestellt, dass die Daten, die ich brauche, nicht in 'sp [[4]]', sondern 'sp [[7]]' enthalten sind. Ist es irgendwie möglich, diese Bedingung dort einzubauen? – AK88
Der nicht so nette Hack ist etwas wie 'df <- if_else (name ==" foo ", sp [[4]], sp [[7]])'. Ich bevorzuge generell die 'dplyr if_else' und nicht die Basis' ifelse', weil die Klasse beibehalten wird. Besserer Ansatz ist es zu lernen, 'library (rvest)' zu verwenden, da es CSS-Selektoren in der 'html_nodes' -Funktion unterstützt, die auf die 'id'-Attribute im HTML-Code zielen können anstatt auf Position – epi99