Я задал этот вопрос некоторое время назад (Recode dataframe based on one column), и ответ работал отлично. Теперь, однако, я почти хочу сделать обратное. А именно, у меня есть (700k * 2000) 0/1/2 или NA. В отдельном фрейме данных у меня есть две колонки (Ref и Obs). 0 соответствует двум экземплярам Ref, 1 - один экземпляр Ref и один экземпляр Obs и 2 - два Obs. Для уточнения, фрагмент данных:Передовая dataframe на основе одной колонки - в обратном порядке
Genotype File ---
Ref Obs
A G
T C
G C
Ref <- c("A", "T", "G")
Obs <- c("G", "C", "C")
Current Data---
Sample.1 Sample.2 .... Sample.2000
0 1 2
0 0 0
0 NA 1
mat <- matrix(nrow=3, ncol=3)
mat[,1] <- c(0,0,0)
mat[,2] <- c(1,0,NA)
mat[,3] <- c(2,0,1)
Desired Data format---
Sample.1 Sample.1 Sample.2 Sample.2 Sample.2000 Sample.2000
A A A G G G
T T T T T T
G G 0 0 G C
Я думаю, что это правильно. Желаемый формат данных имеет два столбца (пробел разделен) для каждого образца. 0 в этом формате (файл plink ped для биоинформатистов там отсутствует) отсутствуют данные.
Можете ли вы предоставить нам объекты R? Рассмотрите возможность использования 'dput'. См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example о том, как сделать воспроизводимый пример. –
Я бы использовал dput, но матрица генотипа и фрейм данных поддержки были довольно большими, на 700 тысяч строк, так что это просто беспорядок. Я могу положить его вручную. – cianius
Сделайте небольшой 5 столбцов, пример из 5 строк. –