按日期选择列

时间:2016-10-24 10:50:47

标签: r

我有这样的矩阵

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列是&#39;小时&#39;而且E是“天”。我会有一个函数,每天收集每天不同变量中三列(A,B,C)的h24小时信息。在此示例中,结果是具有不同名称的9个向量。谢谢

2 个答案:

答案 0 :(得分: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])))
}

答案 1 :(得分: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

...