通过唯一id列将矩阵分配给新矩阵

时间:2014-01-19 01:19:52

标签: r vector matrix

在R中说,你有一个矩阵(一个小例子),看起来像

      id  A  B  C
1     IN  5 12  3
2     DT  4 11  6
3     DT  7 11  6
4     GG  2  1  3
5     GG  4 11  5
6     IN  4  2  5

在这里,我们看到有3组ID(INDTGG),因此在这种情况下(在我的实际情况下为18)我需要3个新矩阵(或有3个矩阵的类?)。

我想要将它们分开并将单独的线下事情分开进行的原因。感谢

如果有帮助,可以使用'ids'矢量;这又是:

c("IN", "DT", "GG")

1 个答案:

答案 0 :(得分:2)

通常很高兴以我们可以快速使用的格式发布您的数据(在您的对象上使用dput,这样我们就可以剪切和粘贴),我在这里读取您的数据:

df<-(read.table(textConnection('       id A  B  C
1     IN  5 12  3
2     DT  4 11  6
3     DT  7 11  6
4     GG  2  1  3
5     GG  4 11  5
6     IN  4  2  5'),header=TRUE))

如果是data.frame,您可以获得一个很好的列表:

split(df,df$id)
# $DT
#   id A  B C
# 2 DT 4 11 6
# 3 DT 7 11 6
# 
# $GG
#   id A  B C
# 4 GG 2  1 3
# 5 GG 4 11 5
# 
# $IN
#   id A  B C
# 1 IN 5 12 3
# 6 IN 4  2 5

但如果是矩阵,你可以这样做:

df.matrix<-as.matrix(df)
lapply(unique(df[,'id']),function(x) df.matrix[df.matrix[,'id']==x,])