Как я могу манипулировать своим фреймом данных, чтобы сохранить столбцы с соответствующими именами строк?

#r #dataframe #matrix #correlation #genetic

Вопрос:

У меня есть фрейм данных с 77 строками и 460 столбцами. Первый столбец представляет идентификатор rsID для каждой строки под названием «RS_number». Каждый столбец помечен идентификатором rsID SNP (например, rs4751).

Мне нужно ограничить этот фрейм данных размерами 76 X 76, отражающими те же имена столбцов, что и переменная «RS_number». Моя первая мысль-сделать row.names равным первому столбцу «RS_number», но я не уверен, как двигаться дальше с этим И как ограничить столбцы теми же идентификаторами, что и имена строк.

Ниже приведен код, который я использовал для создания фрейма данных, и образец фрейма данных:

 '''newdf = concatenated[concatenated$RS_number %in% colnames(hours)[3:76],] %>% 
 as.data.frame()'''



     RS_number rs1 rs2 rs3 rs4 rs10
[,1]  rs1       1.0 0.2 0.3 0.4 NA
[,2]  rs2       0.0 1.0 0.0 NA  0.2
[,3]  rs3       0.2 0.1 1.0 NA  NA
[,4]  rs4       0.0 0.1 0.5 1.0 NA
[,5]  rs5       NA  0.1 NA  0.2 NA
[,6]  rs9       0.5 0.4 0.1 0.0 0.6
 

Я хотел бы, чтобы в моем фрейме данных сохранялись только те столбцы и номера RS, которые являются общими, включая rs1, rs2, rs3, rs4, и исключали rs5 и rs10.

Ответ №1:

Мы можем использовать intersect значения столбца «Rs_number» и имена столбцов «df1», затем объединить «Rs_number» с пересекающимися элементами для выбора столбцов

 nm1 <- intersect(df1$Rs_number, names(df1))
df1[c("Rs_number", nm1)]