Как вы можете устранить чрезмерное представление, вызванное группой столбцов большинства? - PullRequest
2 голосов
/ 31 марта 2020

В настоящее время я работаю над набором генетических данных 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))]))]

Заранее спасибо.

1 Ответ

1 голос
/ 31 марта 2020

Возможно, мы можем удалить подстроку, начиная с . в имени столбца, применив duplicated, чтобы получить все дублированные имена столбцов.

v1 <- sub("\\..*", "", names(data))
newdata <- data[duplicated(v1)|duplicated(v1, fromLast = TRUE)]
names(newdata)
#[1] "P1"      "P1.PE"   "P101"    "P101.PE" "P102"    "P102.PE"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...