2016-07-06 9 views
1

Ich versuche, Spalten eines Datenrahmens zu stapeln und die Zeilennamen zu pflegen. Hier ist ein Beispiel.stack() - wie man Zeilennamen beim Stapeln eines Datenrahmens erhält

tod<-format(seq.POSIXt(as.POSIXct(Sys.Date()), as.POSIXct(Sys.Date()+1), by = "5 min"), 
      "%H:%M", tz="GMT") 
tod<-tod[1:length(tod)-1] 
dat <- data.frame(A = 1:length(tod), B = length(tod):1) 
colnames(dat)<-seq(as.Date('2015-05-01'), as.Date('2015-05-02'), by = 'day') 

rownames(dat)<-tod 

Welche

  X2015.05.01 X2015.05.02 
00:00   1   288 
00:05   2   287 
00:10   3   286 
00:15   4   285 
00:20   5   284 
00:25   6   283 

produziert laufe ich dann

dat<-stack(dat) 

Welche

values  ind 
1  1 2015-05-01 
2  2 2015-05-01 
3  3 2015-05-01 
4  4 2015-05-01 
5  5 2015-05-01 
6  6 2015-05-01 

gibt Gibt es eine Möglichkeit, die Zeilennamen zu erhalten?

Danke für jede Hilfe.

Antwort

1

Row Namen müssen eindeutig sein, so gibt es keine Möglichkeit tod (Tageszeit) in rownames zu replizieren.

Ich empfehle Ihnen tod in einer zusätzlichen Spalte nach dem Stapeln setzen:

new_dat <- stack(dat) 
new_dat$tod <- rep(tod, times = ncol(dat)) 

# values  ind tod 
#1  1 2015-05-01 00:00 
#2  2 2015-05-01 00:05 
#3  3 2015-05-01 00:10 
#4  4 2015-05-01 00:15 
#5  5 2015-05-01 00:20 
#6  6 2015-05-01 00:25 

Wenn Sie noch Zweifel haben, lassen Sie versuchen, die tod zu rownames zuweisen:

rownames(new_dat) <- new_dat$tod 
# Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
# duplicate 'row.names' are not allowed 

sehen? Wir bekommen Fehler.

+0

Danke. Das ist toll – Terno

Verwandte Themen