2016-04-24 13 views
1

Ich arbeite an Scraping einige Daten in einen Datenrahmen, und bekomme einige leere Felder, wo ich stattdessen lieber NA hätte. Ich habe versucht, na.strings, aber bin entweder es an der falschen Stelle oder es funktioniert einfach nicht, und ich habe versucht, alles, was Whitespace von Anfang der Zeile bis Ende war, gub, aber das hat nicht funktioniert.Einfügen von NA in leere Werte von Web Scraping

htmlpage <- read_html("http://www.gourmetsleuth.com/features/wine-cheese-pairing-guide") 
sugPairings <- html_nodes(htmlpage, ".meta-wrapper") 
suggestions <- html_text(sugPairings) 
suggestions <- gsub("\\r\\n", '', suggestions) 

Wie kann ich die leeren Felder mit NA sub, und zwar entweder, sobald es zu dem Datenrahmen hinzugefügt wird, oder vor der Zugabe.

Antwort

2

rvest::html_text hat eine eingebaute Einstellung für die Trimmoption trim=TRUE. Nachdem Sie dies getan haben, können Sie z. ifelse, um nach einer leeren Zeichenfolge zu suchen (=="") oder nzchar zu verwenden.

ich voll könnten Sie dies tun:

html_nodes(htmlpage, ".meta-wrapper") %>% html_text(trim=TRUE) %>% ifelse(. == "", NA, .) 

oder dies:

res <- html_nodes(htmlpage, ".meta-wrapper") %>% html_text(trim=TRUE) 
res[!nzchar(res)] <- NA_character_ 

@ Richard Scriven Verbesserung:

html_nodes(htmlpage, ".meta-wrapper") %>% html_text(trim=TRUE) %>% replace(!nzchar(.), NA) 
+0

Nice one. Ihr 'ifelse()' Aufruf am Ende der Kette könnte auch 'ersetzen (! Nzchar (.), NA)' sein, so dass der zweite Block eine komplette Kette sein könnte. –

+0

Einfach hinzugefügt. Vielen Dank – Rentrop