2016-10-24 6 views
-4

Я матрица, как этотВыбрать столбцы по дате

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)) 

где колонке D является «ч» и Е «день». У меня была бы функция, которая за каждый день собирала h24 часа информацию о трех столбцах (A, B, C) в разных переменных за каждый день. В этом примере результатом является 9 векторов с разными именами. Благодарю вас

+1

Не могли бы вы показать нам, что вы пробовали, и как должен выглядеть ваш предполагаемый выход? – Benjamin

ответ

1

Обычно то, что вы могли бы сделать это функция, которая извлекает 3 массивов для настраиваемого дня и назвать его на все дни в последней колонке 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

ли что-то вроде следующей работы для вас?

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 

... 
Смежные вопросы