根据R中的行索引添加列值

时间:2017-01-09 10:51:16

标签: r dataframe

我在R

中有以下数据框
> head(genes)
     Genes
1  APOBEC4
2  B3GALT2
3 C1orf127
4   CAMK1G
5   CAMTA1
6    EPHX1

我有一个带行索引的向量。

> head(sig)
[1]  10  11  41  54 125 126

现在我想在数据框genes中添加其他列,以便索引sig中的行将获得值" Yes"否则" NO"

类似的东西:

head(genes)
     Genes Sig
1  APOBEC4 NO
2  B3GALT2 NO
3 C1orf127 NO
4   CAMK1G NO
5   CAMTA1 NO
...
10  XXX    YES
...
41  YYY    YES

我试过但我找不到解决方案。

2 个答案:

答案 0 :(得分:2)

我们可以简单地使用base R

genes$Sig <-  c("NO", "YES")[(seq_len(nrow(genes)) %in% sig) + 1]

ifelse

genes$Sig <- ifelse(seq_len(nrow(genes)) %in% sig, "YES", "NO")

或者创建一个“NO”的列,然后根据索引

指定“YES”
genes$Sig <- "NO"
genes$Sig[sig] <- "YES"

答案 1 :(得分:1)

如果您的数据框中有rownames,我不确定。我们可以使用row_number()中的dplyr函数检查sig中是否存在该行,并相应地指定值

library(dplyr)
genes %>%
    mutate(Sig = ifelse(row_number() %in% sig, "YES", "NO"))