在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(IN
,DT
,GG
),因此在这种情况下(在我的实际情况下为18)我需要3个新矩阵(或有3个矩阵的类?)。
我想要将它们分开并将单独的线下事情分开进行的原因。感谢
如果有帮助,可以使用'ids'矢量;这又是:
c("IN", "DT", "GG")
答案 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,])