Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何提取矩阵中的重复行_R - Fatal编程技术网

R 如何提取矩阵中的重复行

R 如何提取矩阵中的重复行,r,R,我有这个矩阵 > Y > [,1] [,2] [,3] [,4] [1,] "0" "2" "9" "5" [2,] "4" "7" "7" "3" [3,] "1" "5" "7" "9" [4,] "7" "8" "7" "4" [5,] "7" "8" "7" "4" [6,] "1" "1" "7" "2" [7,] "7" "8" "7" "4" ... 从这个矩阵中,我想得到所有重复1次、2次、3次的重复

我有这个矩阵

> Y
>      [,1] [,2] [,3] [,4]
[1,] "0"  "2"  "9"  "5" 
[2,] "4"  "7"  "7"  "3" 
[3,] "1"  "5"  "7"  "9" 
[4,] "7"  "8"  "7"  "4" 
[5,] "7"  "8"  "7"  "4" 
[6,] "1"  "1"  "7"  "2" 
[7,] "7"  "8"  "7"  "4" 
...
从这个矩阵中,我想得到所有重复1次、2次、3次的重复行,以此类推

比如说

“7”“8”“7”“4”

在Y中发生3次。如何查找所有其他案例

因此,输出应为:

返回Y中出现2次的所有行。

返回Y中出现3次的所有行。

返回Y中出现4次或以上的所有行。

我已经试着用计算机来解决这个问题

> duplicate

命令,但这还不够。

这里有一个简单的解决方案,它将矩阵中的行连接成一个字符串,然后将字符串出现的频率制成表格

首先,我们将生成一些简单的假数据。我生成随机的0和1,以确保有大量的重复项:

Y[,1][,2][,3][,4]
#> [1,]    0    0    0    1
#> [2,]    0    0    0    0
#> [3,]    0    0    0    0
#> [4,]    0    0    0    1
#> [5,]    0    1    1    0
#> [6,]    0    0    1    0
#我将每行中的所有值折叠成一个字符串,使c(0,1,0,1)变成“0101”
row.ids[1,]0 1
#> [2,]    0    0    0    1
#> [3,]    0    1    1    0
#> [4,]    0    0    0    1
#> [5,]    0    1    1    0
#> [6,]    0    1    1    0
#所有四重复制行
Y[row.ids%在%names中(row.freqs[row.freqs==4]),]
#>       [,1] [,2] [,3] [,4]
#>  [1,]    0    0    0    0
#>  [2,]    0    0    0    0
#>  [3,]    0    0    1    0
#>  [4,]    0    0    1    0
#>  [5,]    0    0    0    0
#>  [6,]    0    0    1    0
#>  [7,]    0    1    1    1
#>  [8,]    0    1    1    1
#>  [9,]    0    1    1    1
#> [10,]    0    0    0    0
#> [11,]    0    1    1    1
#> [12,]    0    0    1    0

由(v0.2.1)创建于2019-02-20这里是一个简单的解决方案,它将矩阵中的行连接成一个字符串,然后将字符串出现的频率制成表格

首先,我们将生成一些简单的假数据。我生成随机的0和1,以确保有大量的重复项:

Y[,1][,2][,3][,4]
#> [1,]    0    0    0    1
#> [2,]    0    0    0    0
#> [3,]    0    0    0    0
#> [4,]    0    0    0    1
#> [5,]    0    1    1    0
#> [6,]    0    0    1    0
#我将每行中的所有值折叠成一个字符串,使c(0,1,0,1)变成“0101”
row.ids[1,]0 1
#> [2,]    0    0    0    1
#> [3,]    0    1    1    0
#> [4,]    0    0    0    1
#> [5,]    0    1    1    0
#> [6,]    0    1    1    0
#所有四重复制行
Y[row.ids%在%names中(row.freqs[row.freqs==4]),]
#>       [,1] [,2] [,3] [,4]
#>  [1,]    0    0    0    0
#>  [2,]    0    0    0    0
#>  [3,]    0    0    1    0
#>  [4,]    0    0    1    0
#>  [5,]    0    0    0    0
#>  [6,]    0    0    1    0
#>  [7,]    0    1    1    1
#>  [8,]    0    1    1    1
#>  [9,]    0    1    1    1
#> [10,]    0    0    0    0
#> [11,]    0    1    1    1
#> [12,]    0    0    1    0

由(v0.2.1)

使用注释末尾的测试矩阵
Y
创建于2019-02-20,使用
aggregate
创建一个数据框
ag
,该数据框的行是
Y
的唯一行,然后是它们出现的次数计数

ag <- aggregate(cbind(count = apply(Y, 1, toString)) ~ ., as.data.frame(Y), 
  FUN = length)

nc <- ncol(Y)
subset(ag, count == 2, select = -count) # shows rows which occur twice

split(ag[1:nc], ag$count) # splits unique rows into those that occur once, twice, etc.

ag使用末尾注释中的测试矩阵
Y
,使用
aggregate
创建一个数据框
ag
,该数据框的行是
Y
的唯一行,然后是它们出现的次数计数

ag <- aggregate(cbind(count = apply(Y, 1, toString)) ~ ., as.data.frame(Y), 
  FUN = length)

nc <- ncol(Y)
subset(ag, count == 2, select = -count) # shows rows which occur twice

split(ag[1:nc], ag$count) # splits unique rows into those that occur once, twice, etc.

ag请用dput()制作一个可复制的示例并更好地解释预期输出。请用dput()制作一个可复制的示例并更好地解释预期输出。