2016-10-12 5 views
0

Ich habe folgendes Problem, dass ich ganz zu lösen kämpfen:Datenrahmen reshape basierend auf Bedingungen

ich einen Datenrahmen haben die aussehen wie:

row1 = c(55.7, NA, NA, "inf", 4.19, 99, 4, 15, 16, NA, 13, 0.1, 0.8, 51, NA, 44) 
row2 = c(13, 1, 81, 6, NA, 0.3, NA, NA, 1.4, 89, NA, NA, 2.1, 99, 0.5, NA) 
df = data.frame(row1, row2) 
df = as.data.frame(t(df)) 

Das erste Problem ist, dass ich Werte ändern müssen, "inf" zu numerisch == 100.

Alles, was ich benutze, hilft nicht. Dies schafft zusätzliche NAs:

data[data =="inf"] = 100 

Diese einfach nicht funktionieren:

data[is.na(data)] = "Skip" 

Ich erwarte, dass es wegen der Datentypen ist, aber ich kann nicht herausfinden, wie es zu beheben.

Das zweite Problem ist komplexer. Ich brauche den Datenrahmen zu transformieren die höchsten Werte Spalten übereinstimmen mit niedrigsten Spalten some wie folgt zu erhalten:

row3 = c("row1","V4", "V12") 
row4 = c("row1", "V6", "V13") 
df2 = data.frame(row3, row4) 
df2 = t(df2) 

Und so weiter für alle Zeilen und Spalten.

Das Problem ist, dass ich nicht einmal einen Weg finden kann, um diese Aufgabe zu lösen, wenn Sie mir eine Richtung geben können, die äußerst wertvoll sein wird.

Vielen Dank

Antwort

0

Für Ihr erstes Problem versuchen, Ihre Werte Zeichen zu konvertieren: es

df[]<-lapply(df, as.character) 
df[df =="inf"] = "100" 

Dann konvertieren zurück zu Faktor:

df[]<-lapply(df, as.factor) 
Verwandte Themen