#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)]