Я уверен, что есть ответы на мой вопрос, но я не могу найти то, что работает, и я абсолютно новый для R, так извиняюсь за избыточность!Транспонирование и слияние наборов данных в R
У меня есть огромный набор данных - 17K с 35 переменными. Это был файл txt, который я импортировал и принуждал к as.mmatrix. 1-й столбец имеет знаковые значения, а остальные 34 столбца имеют числовые значения.
Структура -
>str(data_m)
chr [1:17933, 1:35] "RAB12" "TRIM52" "C1orf86" "PLAC9" "MORN3" "LOC643783" "LOC389541" "OAZ2" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:35] "Name" "X118" "X12" "X21" ...
Теперь есть еще одна маленькая длинная форма набора данных с 2-мя колоннами - Ид и пола.
> str(data_maleids)
'data.frame': 24 obs. of 2 variables:
$ id : Factor w/ 34 levels "X118","X12","X21",..: 8 23 9 19 10 7 5 4 2 30 ...
$ gender: Factor w/ 2 levels "female","male": 2 2 2 2 2 2 2 2 2 2 ...`
Например. -
row.names id gender
1 1 X37 male
2 2 X64 male
Все, что я хочу сделать, это подмножество 1-й набор данных только для тех идентификаторов (X37, X64 и т.д.), которые присутствуют во 2-й набор данных.
Я пробовал переносить больший набор данных, но это дает мне проблемы с именами столбцов, и я не могу найти способ обойти это.
Когда вы читаете в своей первой информационной кадре, не принуждайте ее к матрице. Когда вы читаете в своем втором фрейме данных (только с идентификатором и полом), установите 'stringsAsFactors = FALSE'. Затем просто выполните 'df1 [df1 $ Name% in% df2 $ id,]'. – Thomas
Это должно быть colnames (df1), а не $ Name right? Поскольку id в df2 - это фактически имена столбцов в df1. Но логика сработала. Благодаря ! Однако это приводит к еще одному шагу слияния 1-го столбца $ Name из исходного набора данных, который снова работает, но это не лучший способ сделать это, я думаю. Должен быть способ сохранить столбец под названием Name, в то время как подмножество – user2695213