【发布时间】:2020-06-25 15:24:11
【问题描述】:
我有一个包含 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
我一直在尝试使用类似的问题来回答这个问题,但大多数问题都是关于数字数据的,我在需要数值时遇到错误 - 有没有办法用字符串来做到这一点?
例如我试过:
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"
))
【问题讨论】:
-
请给出可重现的例子
-
谢谢,现在补充
-
df$Gene_names3 <- gsub("[.]", "", paste0(df$Gene_names1, df$Gene_names2))? -
coalesce替换缺失的(即NA)值。您可以用NA替换那些缺少信息的.表示
标签: r dataframe merge data.table