Ein anderer Weg wäre der folgende. Ihre Daten werden hier mydf
genannt. Sie erstellen einen Datenrahmen mit einer Spalte einschließlich 1 bis zum Maximalwert col1
. Dann verwenden Sie die Werte col2
in mydf
zu einer neuen Spalte namens col2
in foo
. Sie verwenden die Zahlen in col1
in mydf
als Index, wenn Sie diesen Prozess ausführen. Zu diesem Zeitpunkt haben Sie NA
in col2
in foo
. Sie wollen NA auf 0 ändern. Der letzte Schritt ist, dies zu tun. Sie suchen nach der Position von NA in col2
in foo
mit is.na()
und vergeben Nullen zu den Positionen.
foo <- data.frame(col1 = 1:max(mydf$col1))
foo$col2[mydf$col1] <- mydf$col2
foo$col2[is.na(foo$col2)] <- 0
Unter lmo Idee auf ein Konto, können Sie einen Datenrahmen mit 0 zunächst erstellen und den dritten Schritt vermeiden.
foo <- data.frame(col1 = 1:max(mydf$col1), col2 = 0)
foo$col2[mydf$col1] <- mydf$col2
# col1 col2
#1 1 0.00
#2 2 0.02
#3 3 0.00
#4 4 0.00
#5 5 0.12
#6 6 0.00
#7 7 0.00
#8 8 0.00
#9 9 0.91
#10 10 0.00
#11 11 0.00
#12 12 0.00
#13 13 1.13
DATA
mydf <- structure(list(col1 = c(2L, 5L, 9L, 13L), col2 = c(0.02, 0.12,
0.91, 1.13)), .Names = c("col1", "col2"), class = "data.frame", row.names = c(NA,
-4L))
Kann nur, dass Ich mag diesen Thread wirklich für all die verschiedenen Arten, wie Menschen gezeigt haben, das Problem anzugehen? – LAP
Ich denke, es könnte sich lohnen, diese Frage (mit vielen sehr schönen Antworten!) Auf eine ähnliche Frage basierend auf gruppierten Daten zu beziehen: [Schnellste Möglichkeit, Zeilen für fehlende Werte in einem dat.frame hinzuzufügen] (http: // stackoverflow .com/questions/10438969/Schnellster Weg zum Hinzufügen von Zeilen für fehlende Werte in einem Datenrahmen) – Henrik