2016-07-21 22 views
0

Den Versuch, herauszufinden, wie man die folgenden Daten in r ziehen:Pulling-Score von Textdaten in r

http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=3&sch=on&format=0

Diese fast funktioniert, aber ich will den Müll auf der Ober- und Unterseite beseitigen und nur Holen Sie sich die Noten.

read.fwf('http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=3&sch=on&format=0', 
     widths=c(11,26,3,26,3,4,21), 
     skip = 8) 
+0

was meinst du mit Müll oben und unten? Es wäre hilfreich, wenn Sie ein Bild posten könnten. –

Antwort

0

Zunächst einmal herzlich willkommen zum Stapeltausch! Also habe ich etwas in deinem Code geändert, so wie du nur 6 Breiten benötigst, du hattest eine extra Spalte, also bin ich das losgeworden. Als ich die Daten online abrief, bemerkte ich, dass die erste Reihe ziemlich seltsam war, also habe ich einfach alles zusammen geritten und später manuell hinzugefügt.

data <- read.fwf('http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=3&sch=on&format=0',widths=c(10,26,3,26,3,4), sep = "\t", header = FALSE, skip = 8) 
# This line subsets the data so you don't have that "junk" at the bottom and deletes the row 
# with the html tagging. 

data <- data[2:2424,] 
data <- data.frame(data) 

# Create a vector that has the column headers 
names <- c("date", "Team1","Runs", "Team 2","Runs","Something") 
colnames(data) <- names 

# Create the first row of data that we previously deleted. 

firstrow = data.frame("2016-04-03", "@Pirates", 4, "Cardinals",1,"") 
colnames(firstrow) <- names 

finaldata <- rbind.data.frame(firstrow,data) 

Für die Zukunft, wenn Sie einen Screenshot posten, was Sie erachten als Junk, die für die Menschen nützlich sein würde, versuchen Sie mit Ihrer Frage zu helfen.

UPDATE

data <- read.fwf('http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=3&sch=on&format=0', 
        widths=c(10,26,3,26,3,4), sep = "\t", header = FALSE, skip = 9) 

data <- data.frame(data) 

# This line subsets the data so you don't have that "junk" at the bottom and deletes the row 
# with the html tagging. 

firstrow <- read.fwf('http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=3&sch=on&format=0', 
        widths=c(-8,-1,-1,9,26,3,26,3,4), sep = "\t", header = FALSE, n = 1, skip = 8) 
firstrow <- data.frame(firstrow,stringsAsFactors=FALSE) 

firstrow[,1] <- paste("2",firstrow[1,1],sep = "") 

# Create a vector that has the column headers 
names <- c("date", "Team1","Runs", "Team 2","Runs","Something") 
colnames(data) <- names 



colnames(firstrow) <- names 

finaldata <- rbind.data.frame(firstrow,data) 

Die negativen Werte für die Spalte mit Bewegung über die Daten, ich mit ihm nur herumgespielt, bis es so ausgearbeitet, dass alles, was in der ersten Reihe fehlte ein „2 war ". Ich füge dann die "2" ein und verwende die rbind-Funktion, um den vollständigen Datenrahmen zu erzeugen. Ich hoffe, dass dir das hilft.

Ich habe es auch auf dieser Seite getestet: http://masseyratings.com/scores.php?s=285971&sub=14342&all=1&mode=2&sch=on&format=0 und es hat wie erwartet funktioniert.

+1

Danke, gibt es eine Möglichkeit, die erste Zeile nicht manuell hinzufügen zu müssen, falls ich Daten für mehrere Staffeln usw. ziehen möchte? – Fermat

+0

@Ferat bitte das Update sehen. Ich weiß, es ist nicht die schönste Lösung, aber es sollte Ihre Frage beantworten. Und wenn das funktioniert, klicke bitte auf den Haken, um es zu markieren :) –

+0

@Fermat würde gerne Feedback bekommen und wissen, ob diese Lösung dir geholfen hat. –