2014-06-26 9 views
31

Ich bin einen Datenrahmen mit diesem Code zu erstellen:Entfernen Anzeige von Zeilennamen von Datenrahmen

df <- data.frame(dbGetQuery(con, paste('select * from test'))) 

, die in diesen Ergebnisse:

UID  BuildingCode AccessTime 
1 123456 BUILD-1  2014-06-16 07:00:00 
2 364952 BUILD-2  2014-06-15 08:00:00 
3 95865 BUILD-1  2014-06-06 09:50:00 

ich dann die Zeilennamen versuchen, zu entfernen (1 als here diesen Code unter Verwendung vorgeschlagen, 2, 3, usw.):

rownames(df) <- NULL 

Aber dann, wenn ich drucken df zeigt es immer noch die Zeilennamen an. Gibt es eine Möglichkeit, die Zeilennamen beim Erstellen des Datenrahmens nicht einzubeziehen? Ich fand einen Vorschlag über row.name = FALSE, aber als ich es versuchte, bekam ich nur Fehler (ich könnte es an der falschen Stelle platziert haben).

BEARBEITEN: Was ich tun möchte, ist das Datum in eine HTML-Tabelle konvertieren und ich möchte nicht die Zeile Name in der Tabelle vorhanden sein.

+1

es ist nicht klar, was Sie unter „wenn ich df drucken“. Ist 'row.names = FALSE' in' write.table' relevant? – Henrik

+0

@Henrik bietet hier wahrscheinlich die beste Lösung. Ich frage mich allerdings, warum etwas wie 'Attribute (df) $ row.names <- NULL 'löscht alle Werte form df –

+0

Was ich mit" Wenn ich df ausdrucken "bedeutet, gebe ich' df' in das Terminal, das dann druckt der Datenrahmen. Ich habe keine 'write.table', weil ich keine Tabelle schreibe (und wenn ich das tue, werde ich xtable benutzen). –

Antwort

51

Sie haben die Rownames erfolgreich entfernt. Die Methode print.data.frame zeigt nur die Zeilennummern an, wenn keine Rownames vorhanden sind.

df1 <- data.frame(values = rnorm(3), group = letters[1:3], 
        row.names = paste0("RowName", 1:3)) 
print(df1) 
#   values group 
#RowName1 -1.469809  a 
#RowName2 -1.164943  b 
#RowName3 0.899430  c 

rownames(df1) <- NULL 
print(df1) 
#  values group 
#1 -1.469809  a 
#2 -1.164943  b 
#3 0.899430  c 

können Sie unterdrücken die rownames Druck und Zahlen in print.data.frame mit dem Argument row.names.

print(df2, row.names = FALSE) 
#  values group 
# -1.4345829  d 
# 0.2182768  e 
# -0.2855440  f 

bearbeiten Wie in den Kommentaren geschrieben, möchten Sie diese in HTML konvertieren. Aus den Dokumenten xtable und print.xtable können Sie sehen, dass das Argument include.rownames den Trick machen wird.

library("xtable") 
print(xtable(df1), type="html", include.rownames = FALSE) 
#<!-- html table generated in R 3.1.0 by xtable 1.7-3 package --> 
#<!-- Thu Jun 26 12:50:17 2014 --> 
#<TABLE border=1> 
#<TR> <TH> values </TH> <TH> group </TH> </TR> 
#<TR> <TD align="right"> -0.34 </TD> <TD> a </TD> </TR> 
#<TR> <TD align="right"> -1.04 </TD> <TD> b </TD> </TR> 
#<TR> <TD align="right"> -0.48 </TD> <TD> c </TD> </TR> 
#</TABLE> 
+1

Nachdem ich gemacht habe, wie ich oben sagte, wenn ich 'Attribute (df)' mache, bekomme ich dieses Resultat: '$ row.names [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'. Bedeutet dies nicht, dass die Zeilennamen noch vorhanden sind?Im Grunde möchte ich den DF in eine HTML-Tabelle konvertieren und möchte nicht, dass der Zeilenname vorhanden ist. –

+0

@DomAbbott Von den R Docs ist ein 'data.frame'" ist eine 'liste' von Variablen der gleichen Anzahl von Zeilen mit eindeutigen Zeilennamen, gegeben Klasse '' data.frame''. Wenn keine Variablen enthalten sind, Die Zeilennamen bestimmen die Anzahl der Zeilen. " Daher sind in den Attributen immer Zeilennamen vorhanden. Wie machst du deine Conversion? –

+0

Was meinst du mit Umwandlung? Ich verwende diesen Code, um eine HTML-Tabelle 'print (xtable (df), type =" html ", file =" example.html ") zu erstellen, aber dies schließt die Zeilennamen ein. –

13

Ja, ich weiß, dass es mehr als ein halbes Jahr später und ein bisschen spät, aber

row.names(df) <- NULL 

funktioniert. Für mich zumindest :-)

Und wenn Sie wichtige Informationen in row.names wie Daten zum Beispiel haben, was ich gerade:

df$Dates <- as.Date(row.names(df)) 

Dies wird eine neue Spalte am Ende hinzufügen, aber wenn Sie wollen, dass es zu Beginn des Datenrahmens

df <- df[,c(7,1,2,3,4,5,6,...)] 

Hope this diejenigen von Google hilft :)

Verwandte Themen