Замените значение в датафрейме на имена строк при выполнении транспонирования - PullRequest
1 голос
/ 01 мая 2019

У меня есть кадр данных, как показано ниже

    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   *

Я прошел этот пост , но у него те же имена строк и столбцов, что он не будет работать.

1 Ответ

2 голосов
/ 01 мая 2019

Мы можем получить индекс строки / столбца с arr.ind в which на логическом matrix и получить соответствующие имена строк и имен столбцов

i1 <- which(dat == "*", arr.ind = TRUE)
data.frame(School = colnames(dat)[i1[,2]], Agency = row.names(dat)[i1[,1]])

data

dat <- structure(list(X = c("*", "", "*", "", "", "*", "*", "", "*"), 
Y = c("", "", "", "", "", "", "", "", "*"), Z = c("", "", 
"", "", "", "", "", "*", "")), row.names = c("A", "B", "C", 
 "D", "E", "F", "G", "H", "I"), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...