使用字符串条件在列表中拆分矩阵

时间:2012-10-05 01:37:20

标签: r list matrix split unique

我创建了一个包含105个矩阵的列表,如下所示:

m<-vector("list",105)
for (i in 2:105) {
    m[[i-1]]<-Datos[(x[i-1]+1):x[i],1:14] }
m[[105]]<-Datos[(x[105]+1):533195,1:14]

例如,我的矩阵编号104的一部分返回(在列中):

m[[104]]

    ID:                    
     8866 
     8866 
     8866 
     8866 
     8866 
     8866 
     8866 
     8866

  Date: 
     1990-4-15 
     1990-4-16
     1990-4-17
     1990-4-18
     1990-4-15
     1990-4-16
     1990-4-17
     1990-4-18

    Series: 
        APV 
        APV 
        APV 
        APV 
        INV 
        INV 
        INV 
        INV

这些是矩阵的一些列。我想要的是使用系列列分割这个矩阵。我认为这将是一个列表,取决于不同系列的数量。在这种情况下有2:APV and INV(请注意,我不知道每个矩阵的系列名称,因此必须有一个函数来提取唯一的不同系列)

总之,我希望如此:

m[[104]][[1]] returns:

        ID:                    
         8866 
         8866 
         8866 
         8866 


      Date: 
         1990-4-15 
         1990-4-16
         1990-4-17
         1990-4-18


        Series: 
            APV 
            APV 
            APV 
            APV 



And m[[104]][[2]] returns:

        ID:                    
         8866 
         8866 
         8866 
         8866 


      Date: 
         1990-4-15 
         1990-4-16
         1990-4-17
         1990-4-18


        Series: 

            INV 
            INV 
            INV 
            INV

或许你想出一种更有效的方法来做到这一点。

PD:不知道如何将列放在同一级别

1 个答案:

答案 0 :(得分:0)

试试这个:

library(plyr)
lapply(m, dlply, "Series")

或:

lapply(m , function(x)split(x, x$Series))