индексирование одного кадра данных с другим - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующее подмножество из двух длинных data.frame:

df1 <- data.frame("trial" = c('SA1','SA2','ES1','SA3','SA4','ES5'), "Genotype" = c('GID1','GID1','GID1','GID2','GID2','GID2'))
df2 <- data.frame('GID1'= c('0','1'),'GID2'=c('1','0'))

Я хочу индексировать df1$Genotype столбец по df2 именам столбцов и расширять df2столбцы путем подстановки значений df1$trial в качестве новых столбцов в df2.

Таким образом, в результате я получу df3 как расширение df2 следующим образом:

df3 <- data.frame('SA1'=c(0,1), 'SA2'=c(0,1), 'ES1'=c(0,1), 'SA3'= c(1,0),'SA4'=c(1,0),'ES5'=c(1,0))

Обратите внимание, что data.frame огромен, и я пробовал такие функции, какmatch и %in% безуспешно.

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

1 Ответ

0 голосов
/ 08 ноября 2018

Это проще, чем кажется:

df3 <- df2[df1$Genotype]
colnames(df3) <- df1$trial
df3
#   SA1 SA2 ES1 SA3 SA4 ES5
# 1   0   0   0   1   1   1
# 2   1   1   1   0   0   0

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...