【问题标题】:Fill down column based on values in another [duplicate]根据另一个[重复]中的值填写列
【发布时间】:2020-04-10 23:11:23
【问题描述】:

我有一个 df:

ID  Tag
999 YES
999 
100
100 NO
500

我需要将“标签”值填充到匹配的 ID 变量中 - 以便该 ID 的每个实例都有一个匹配的标签所以我最终会得到:

ID  Tag
999 YES
999 YES
100 NO 
100 NO
500 

【问题讨论】:

    标签: r match fill


    【解决方案1】:

    您可以使用ave为每个组填写na

    df$Tag  <- with(df, ave(Tag, ID, FUN=function(x) {
      i <- is.na(x)
      x[i]  <- x[!i][1]
      x
    }))
    df
    #   ID  Tag
    #1 999  YES
    #2 999  YES
    #3 100   NO
    #4 100   NO
    #5 500 <NA>
    

    或者使用fill

    library(dplyr)
    library(tidyr)
    df %>% group_by(ID) %>% fill(Tag, .direction = "downup")
    ## A tibble: 5 x 2
    ## Groups:   ID [3]
    #     ID Tag  
    #  <int> <fct>
    #1   999 YES  
    #2   999 YES  
    #3   100 NO   
    #4   100 NO   
    #5   500 NA   
    

    【讨论】:

    • 我使用了 ave 解决方案 - 干杯!
    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2022-12-15
    • 1970-01-01
    • 2020-02-17
    • 2021-11-29
    • 2021-01-24
    相关资源
    最近更新 更多