R 在进行转置时,用行名称替换数据帧中的值

R 在进行转置时,用行名称替换数据帧中的值,r,R,我有一个如下的数据帧 X Y Z A * B C * D E F * G * H * I * * 我想将列名更改为行,这样它就可以与原始行重复多次,在单元格中有一个星号 结果输出如下所示 School Agency X A X C X F X G X I Y I Z * 我检查

我有一个如下的数据帧

    X   Y   Z
A   *       
B           
C   *       
D           
E           
F   *       
G   *       
H           *
I   *   *   
我想将列名更改为行,这样它就可以与原始行重复多次,在单元格中有一个星号

结果输出如下所示

School  Agency
X   A
X   C
X   F
X   G
X   I
Y   I
Z   *

我检查过了,但它的行和列名相同,因此不起作用。

我们可以使用
中的
arr.ind
获取行/列索引,该索引位于逻辑
矩阵上的
,并获得相应的行名和列名

i1 <- which(dat == "*", arr.ind = TRUE)
data.frame(School = colnames(dat)[i1[,2]], Agency = row.names(dat)[i1[,1]])
i1
dat <- structure(list(X = c("*", "", "*", "", "", "*", "*", "", "*"), 
Y = c("", "", "", "", "", "", "", "", "*"), Z = c("", "", 
"", "", "", "", "", "*", "")), row.names = c("A", "B", "C", 
 "D", "E", "F", "G", "H", "I"), class = "data.frame")