2016-05-07 8 views
2

Ich muss einen neuen Datenrahmen aus einem Datenrahmen erstellen, den ich nicht a priori kann.Neuen Datenrahmen dynamisch aus bestehendem Datenrahmen erstellen

Der neue Datenrahmen sollte die gleiche Struktur wie der alte haben, aber er sollte leer sein.

Beispiel

Nehmen wir an, dass der alte Datenrahmen ist folgendes:

newDat <- data.frame("var1" = as.numeric(), "var2" = as.character(), "var3" = as.numeric()) 

Der Punkt ist, dass ich don‘:

> c1 = c(1,2,3) 
> c2 = c("str1", "str2", "str3") 
> c3 = c(3.2, 2.4, 5.6) 
> m <- data.frame(c1,c2,c3) 
> m 
    c1 c2 c3 
1 1 str1 3.2 
2 2 str2 2.4 
3 3 str3 5.6 
> names(m) <- c("var1", "var2", "var3") 
> m 
    var1 var2 var3 
1 1 str1 3.2 
2 2 str2 2.4 
3 3 str3 5.6 

Der neue Datenrahmen so sein sollte t wissen, wie der bestehende Datenrahmen (m) gemacht wird

Antwort

5

Nehmen Sie einfach keine Zeilen aus der origina l Datenrahmen:

> testDat = m[FALSE,] 

Es gibt einen kleinen Unterschied zwischen diesem und Ihrem newDat Beispiel, weil mein testDat einen Faktor Spalt hat, die nach wie vor die Ebene von dem ursprünglichen Faktor hat:

> str(testDat) 
'data.frame': 0 obs. of 3 variables: 
$ var1: num 
$ var2: Factor w/ 3 levels "str1","str2",..: 
$ var3: num 

Wenn das nicht ein Problem, dann Job erledigt, wenn es ein Problem ist, dann müssen Sie wahrscheinlich über die Variablen und alle Faktoren zurücksetzen ...

+1

..oder einfach 'm <- data.frame (c1, c2, c3, stringsAsFactors = FALSE) 'in Ihrem alten Datenrahmen. Mit @Spacedman-Lösung behalten Sie dann die Zeichenklasse für das Objekt "testDat $ var2" bei. Aber das hängt natürlich von Ihrem realen Datensatz ab –

Verwandte Themen