基于列中不同名称的子集矩阵数据

时间:2018-10-25 07:49:43

标签: r matrix

我有一个1000行9列的矩阵。在第二列中,我有重复的名称,并且我想基于此列中的“前”十个“不同”名称对矩阵进行子集化。我该怎么写?

#example:
 sig<-c(6,7,12,13,16,18,16,11,11,12,12,10,12,13,15,16,16,18,16,17,15,11,12,12)  
name<-c(a,a,a,a,b,b,g,g,j,j,k,k,f,t,t,t,r,w,s,s,h,h,o,o)

第二列是“名称”,我想对(a,a,a,a,b,b,g,g,j,j,k,k,f,t,t,t,r, w,s,s)。它们是前十个不同的名称。

1 个答案:

答案 0 :(得分:1)

这是一个例子:

# generate some data
set.seed(1)
m1 <- as.matrix(data.frame(a=sample(letters, 20, replace=T),
                           b=rnorm(20)))

head(m1)
     a   b            
[1,] "g" " 1.51178117"
[2,] "j" " 0.38984324"
[3,] "o" "-0.62124058"
[4,] "x" "-2.21469989"
[5,] "f" " 1.12493092"
[6,] "x" "-0.04493361"

因此,a列中的前三个唯一的“名称”为g, j, o。 现在,您可以按如下所示对矩阵进行子集处理:

m1[m1[, 1] %in% unique(m1[, 1])[1:3], ]


     a   b            
[1,] "g" " 1.51178117"
[2,] "j" " 0.38984324"
[3,] "o" "-0.62124058"
[4,] "j" "-1.98935170"
[5,] "j" "-0.47815006"