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

gcmastyq  于 2022-12-30  发布在  其他
关注(0)|答案(3)|浏览(126)

我在R中有以下 Dataframe

> head(genes)
     Genes
1  APOBEC4
2  B3GALT2
3 C1orf127
4   CAMK1G
5   CAMTA1
6    EPHX1

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

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

现在,我想向 Dataframe 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

我试过了,但找不到解决办法。

798qvoo8

798qvoo81#

我们可以简单地使用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"
o7jaxewo

o7jaxewo2#

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

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

lstz6jyr3#

试试这样的方法:

library(dplyr)
genes <- genes %>%
    mutate(Sig = case_when(as.numeric(row.names(.)) %in% sig ~ "YES", TRUE ~ "NO"))

我这样用它,它对我很有效。

SAC_FULL_MERGE <- SAC_FULL_MERGE %>% 
     mutate(Country = 
     case_when(as.numeric(row.names(.)) <= 135159 ~ "US", 
               as.numeric(row.names(.)) > 135159 ~ "CAN")) %>% 
     as.data.frame()

相关问题