1

假设我的 df 中有一个变量 Font 下的 NA 值。如何根据变量 Group 下的匹配值替换 NA 值?例如,我希望 Group = 1 的所有行都将 Arial 作为字体,而 Group = 2 的所有行都将 Helvetica 作为字体。我知道我可以执行以下操作: df$Font[df$Group==1]<-"Arial" 或使用 'car' 包中的 recode() 。然而,假设有成千上万个不同的组和字体,我不想在我的代码中不断地输入它们。

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

1 回答 1

4

用于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
于 2015-12-23T23:43:02.047 回答