我有一个包含四个变量的数据帧
data2=data.frame(ths= c("Bu1", "Bu2", "Bu3", "Bu4"), ph=c("na", "na", "na", "na", "a", "a", "a", "a", "u", "u", "u", "u"), nca=c(56, 78, 34, 67, 43, 23, 24, 12, 76, 79, 56, 67), ca=c(29, 7, 51, 18, 13, 33, 32, 44, 4, 1, 23, 13))
> data2
ths ph nca ca
1 Bu1 na 56 29
2 Bu2 na 78 7
3 Bu3 na 34 51
4 Bu4 na 67 18
5 Bu1 a 43 13
6 Bu2 a 23 33
7 Bu3 a 24 32
8 Bu4 a 12 44
9 Bu1 u 76 4
10 Bu2 u 79 1
11 Bu3 u 56 23
12 Bu4 u 67 13
对于每个TH值(Bu1、Bu2、Bu3、Bu4),我想基于此数据帧创建一个矩阵,其中每行对应于ph组合数据的行号
- BU1与BU1
- BU1与BU1
- BU1与BU1
- Bu2与Bu2 a
- Bu2与Bu2
- Bu2与Bu2
- Bu3 na与Bu3 a
- Bu3与Bu3
- Bu3与Bu3
- Bu4 na对Bu4 a
- Bu4与Bu4
- Bu4与Bu4
它将导致这样的输出
> output2
[,1] [,2]
[1,] 1 5
[2,] 1 9
[3,] 5 9
[4,] 2 6
[5,] 2 10
[6,] 6 10
[7,] 3 7
[8,] 3 11
[9,] 7 11
[10,] 4 8
[11,] 4 12
[12,] 8 12
在另一个例子中,我有第二个更简单的数据帧,我想创建一个包含所有这些数据帧的矩阵,我使用了下面的代码行.我们的 idea 是为data2提供类似的东西.在这种情况下,我没有成功地找到一个方法来做这件事.
data1=data.frame(ths= c("Bu1", "Bu2", "Bu3", "Bu4"), nca=c(56, 78, 34, 67), ca=c(29, 7, 51, 18))
> data1
ths nca ca
1 Bu1 56 29
2 Bu2 78 7
3 Bu3 34 51
4 Bu4 67 18
outpu1 = t(combn(seq_along(data1$ths),2))
> outpu1
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 1 4
[4,] 2 3
[5,] 2 4
[6,] 3 4