2016-10-24 3 views
-4

Ich habe eine Matrix wie dieseWählen Sie Spalten nach Datum

mydf <- data.frame(A = rnorm(24*3), 
        B = rnorm(24*3), 
        C=rnorm(24*3), 
        D=rep(0:23, 3), 
        E=rep(1:3, each=24)) 

wo Spalte D ‚Stunden‘ und E ‚Tag‘. Ich würde eine Funktion haben, die für jeden Tag h24 Stunden Informationen der drei Spalten (A, B, C) in verschiedenen Variablen für jeden Tag sammelt. In diesem Beispiel ist das Ergebnis 9 Vektoren mit unterschiedlichen Namen. Danke

+1

Können Sie uns zeigen, was Sie versucht haben und wie Ihre geplante Ausgabe aussehen soll? – Benjamin

Antwort

1

Normalerweise, was Sie tun würden, ist eine Funktion, die den 3-Arrays für einen benutzerdefinierten Tag abruft und nennt es für alle Tage in der letzten Spalte unique(mydf$E)

f = function(day) { 
    return(data.frame(A=c(mydf[mydf$E == day,1]), 
        B=c(mydf[mydf$E == day,2]), 
        C=c(mydf[mydf$E == day,3]))) 
} 
0

Tut so etwas wie die folgende Arbeit für Sie?

unlist(lapply(split(mydf, mydf$E), function(x) as.list(x[,1:3])), recursive = FALSE) 

$`1.A` 
[1] -0.02234168 -1.39567164 -1.36910883 -0.97186737 0.10698377 2.50659491 -0.34669049 -0.16750679 1.25631564 0.53672197 -0.65851597 
[12] 1.29143728 1.01700434 -1.06702387 0.99388570 0.07563692 0.25858937 -0.28920121 -0.23395194 0.55810883 0.93800027 -0.20731405 
[23] -0.89344069 0.64916554 

$`1.B` 
[1] -0.77196984 -1.51971782 -0.43249607 0.55418363 0.61189820 0.13621661 -0.17748362 0.83914191 0.19936105 1.26178645 -1.64614677 
[12] 1.89813460 -2.02731987 0.59106807 -1.10953633 1.59606618 -0.82820346 -0.03956721 -1.85002284 -0.59337005 -1.02890463 -0.50953969 
[23] 0.22711980 0.70982842 

... 
Verwandte Themen