У меня есть набор данных с 2 столбцами имен генов, которые выглядят так:
Gene_names1 Gene_names2
ACE .
BRCA .
. SEP7
. CTFL
HER2 .
ZAP70 .
Есть ли способ объединить эти столбцы в одном наборе данных, чтобы получить вывод:
Gene_names1 Gene_names2 Gene_names3
ACE . ACE
BRCA . BRCA
. CTFL CTFL
. CTFL CTFL
HER2 . HER2
ZAP70 . ZAP70
Я пытался ответить на этот вопрос, используя похожие вопросы, но большинство из них имеют данные о цифрах c, и я получаю ошибки, требующие значений чисел c - есть ли способ сделать это со строками?
Например, я пытался:
df$Gene_names3 <- coalesce(df$Gene_names1, df$Gene_names2) #runs but is a replicate of Gene_names1
df$Gene_names3<-rowSums(df[, c("Gene_names1", "Gene_names2")], na.rm=T) #numeric error
df %>% mutate(Category = coalesce(Gene_names1, Gene_names2))
Ошибка: имена столбцов X
, Y
, Z
, Z1
не должны дублироваться. Используйте .name_repair для определения исправления.
Я вижу, что что-то вроде df[, Gene_names3 := Gene_names1][is.na(Gene_names1), Gene_names3 := Gene_names2][]
может работать, но я не знаю, как изменить is.na()
на "is". если это имеет смысл.
У меня всего 230 столбцов, Gene_names1 - это фактически номер столбца 210, а Gene_names2 - это столбец 222 для контекста.
structure(list(Gene_names1 = c("ACE", "BRCA", ".", ".", "HER2",
"ZAP70"), Gene_names2 = c(".", ".", "SEP7", "CTFL", ".", "."
)), row.names = c(NA, -6L), class = c("data.table", "data.frame"
))