Объединить два столбца из отдельных фреймов данных с 50% рандомизированных от каждого в R - PullRequest
0 голосов
/ 11 октября 2019

Я должен объединить столбцы 'gr' из кадров данных A и B вместе с 50% из A и 50% из B. Строки в каждом кадре данных, выбранном для объединения, должны выбираться случайным образом.

Кроме того,Я хочу убедиться, что порядок строк сверху вниз одинаков.

Не могли бы вы помочь?

Спасибо вам

Вот пример:

dataframe_A <- data.frame(row.names = c("OP2645ii_c","OP5048___e","OP5048___f","OP5046___d","OP2645ii_e","OP2645ii_a","OP5054DNAa","OP5048___c","OP2645ii_d","OP5048___b","OP5047___a","OP5048___h","OP5053DNAb","OP3088i__a","OP5048___g","OP5053DNAa","OP5049___a","OP2645ii_b","OP5046___c","OP5044___c","OP2413iiia","OP5054DNAc","OP5046___e","OP5054DNAb","OP5044___a","OP5046___a","OP5046___b","OP2413iiib","OP5051DNAa","OP5048___d","OP5044___b","OP5049___b","OP5051DNAc","OP5051DNAb","OP5053DNAc","OP5047___b","OP5043___b","OP5043___a","OP5052DNAa"),
                          gr = c("5","3","3","5","5","5","5","3","5","3","3","3","3","3","3","3","2","1","2","1","1","1","2","2","2","1","2","1","1","1","2","1","1","4","4","4","4","4","4"))

dataframe_B <- data.frame(row.names = c("OP2645ii_c","OP5048___e","OP5048___f","OP5046___d","OP2645ii_e","OP2645ii_a","OP5054DNAa","OP5048___c","OP2645ii_d","OP5048___b","OP5047___a","OP5048___h","OP5053DNAb","OP3088i__a","OP5048___g","OP5053DNAa","OP5049___a","OP2645ii_b","OP5046___c","OP5044___c","OP2413iiia","OP5054DNAc","OP5046___e","OP5054DNAb","OP5044___a","OP5046___a","OP5046___b","OP2413iiib","OP5051DNAa","OP5048___d","OP5044___b","OP5049___b","OP5051DNAc","OP5051DNAb","OP5053DNAc","OP5047___b","OP5043___b","OP5043___a","OP5052DNAa"),
                          gr = c("1","2","3","3","2","1","4","4","4","3","2","5","1","4","3","4","5","5","1","2","2","3","4","5","1","2","2","3","4","4","5","5","2","1","3","5","3","2","2"))

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете использовать sample, чтобы случайным образом выбирать индексы строк из обоих фреймов данных, sort их, чтобы они были в одном порядке, и rbind оба набора данных вместе.

rbind(
  dataframe_A[sort(sample(nrow(dataframe_A), nrow(dataframe_A)/2)),,drop = FALSE],
  dataframe_B[sort(sample(nrow(dataframe_B), nrow(dataframe_B)/2)),,drop = FALSE])

Чтобы иметьнеповторяющиеся имена строк, мы можем сделать

inds1 <- sample(rownames(dataframe_A), nrow(dataframe_A)/2)
inds2 <- sample(setdiff(rownames(dataframe_B), inds1), nrow(dataframe_B)/2)
rbind(dataframe_A[inds1,, drop = FALSE], dataframe_B[inds2,, drop = FALSE])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...