【问题标题】:Adding a value to a column based on other values in R根据 R 中的其他值向列添加值
【发布时间】:2016-06-13 11:43:41
【问题描述】:

我有一个看起来像这样的数据集

ID   d1   d2   
1    G    G
2    A    G
3    A    A
4    G    A
5    NA   NA
6    G    G

我想根据 d1 和 d2 的值添加另一列

ID   d1   d2    new  
1    G    G     GG
2    A    G     AG
3    A    A     AA
4    G    A     GA   
5    NA   NA    NA
6    G    G     GG

【问题讨论】:

  • 我猜最后一个应该是GG

标签: r data-manipulation


【解决方案1】:

我们可以使用paste

df1$new <- with(df1, ifelse(is.na(d1)|is.na(d2), NA, paste0(d1, d2)))
df1$new
#[1] "GG" "AG" "AA" "GA" NA   "GG"

【讨论】:

    【解决方案2】:
    df <- within(df,new <- paste(d1,d2,sep=""))
    
    df$new <-replace(df$new,df$new%in%"NANA",NA)
    
      id   d1   d2  new
    1  1    G    G   GG
    2  2    A    G   AG
    3  3    A    A   AA
    4  4    G    A   GA
    5  5 <NA> <NA> <NA>
    6  6    G    G   GG
    

    如果你想从数据中删除 NA 行,你可以使用

    df <- within(subset(df,!is.na(d1)&!is.na(d2)),new <- paste(d1,d2,sep=""))
    
    
      id d1 d2 new
    1  1  G  G  GG
    2  2  A  G  AG
    3  3  A  A  AA
    4  4  G  A  GA
    6  6  G  G  GG
    

    【讨论】:

      【解决方案3】:

      您也可以尝试dplyr 包中的mutate 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        • 2021-07-27
        • 2022-08-13
        相关资源
        最近更新 更多