В настоящее время я работаю над набором генетических данных c с двумя группами. P [Anynumber], P [Anynumber] .PE
Эти группы пациентов находятся на разных стадиях (P = начальная, PE = более 24 недель). Сейчас у меня большая группа P, чем PE. Около 96 образцов P, 65 PE в одном и том же кадре данных
Я уже создал функцию для построения PCA с обоими этапами, но это чрезмерное представление, вызванное группой P, перемещает все PCA.
По этой причине я хотел бы удалить те, которые не являются дубликатами. Я имею в виду, я просто хочу фрейм данных, который содержит оба образца. Например: P2 и PE_2, P3 и PE_3, и удалите тех, у кого есть P [AnyNumber], но не PE
Пример кадра данных:
data <- data.frame(matrix(rbinom(10*1000, 1, .5), ncol=10))
colnames(data) <- c("P1","P1.PE","P10","P100","P101","P101.PE", "P102", "P102.PE","P103","P104")
То, что я ожидаю, это будет кадр данных с столбцы:
P1 | P1.PE | P101 | P101.PE | P102 | P102.PE |
То, что я пытался сделать, это отфильтровать кадр данных, используя сначала grepl и strsplit, но я получил ошибку и, возможно, есть более простой способ сделать это.
data.filter <- data[,c(unlist(data.frame(strsplit(colnames(data[,grepl("\\.",colnames(data))]),"\\."),stringsAsFactors = F)[1,]),colnames(data[,grepl("\\.",colnames(data))]))]
Заранее спасибо.