【问题标题】:How to replace value in a variable based on matching values in another variable in R?如何根据R中另一个变量中的匹配值替换变量中的值?
【发布时间】:2015-12-23 23:10:26
【问题描述】:

假设我的 df 中的一个变量 Font 下有 NA 值。如何根据变量 Group 下的匹配值替换 NA 值? 例如,我希望 Group = 1 的所有行都将 Arial 作为字体,而 Group = 2 的所有行都将 Helvetica 作为字体。 我知道我可以执行以下操作: df$Font[df$Group==1]

Example data:
   Group  Font
   1      Arial
   1      NA
   2      NA
   2      Helvetica

【问题讨论】:

    标签: r conditional-statements recode


    【解决方案1】:

    使用ave 获取非缺失值并填充:

    dat <- read.table(text="   Group  Font
       1      Arial
       1      NA
       2      NA
       2      Helvetica",header=TRUE)
    
    dat$Font <- with(dat, ave(Font, Group, FUN=function(x) replace(x, TRUE, na.omit(x)[1L])))
    
    #  Group      Font
    #1     1     Arial
    #2     1     Arial
    #3     2 Helvetica
    #4     2 Helvetica
    

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 2019-11-23
      • 1970-01-01
      • 2022-06-29
      • 2023-04-09
      • 2013-08-06
      相关资源
      最近更新 更多