假设我在变量中有NA值,在我的df中有Font。如何根据变量Group下的匹配值替换NA值? 例如,我希望Group = 1的所有行都有Arial作为Font,而Group = 2的所有行都将Helvetica作为Font。 我知道我可以做以下事情: df $ Font [df $ Group == 1]< - “Arial”或使用'car'包中的recode()。 但是,假设有数千种不同的组和字体,我不想在我的代码中继续输入它们。
Example data:
Group Font
1 Arial
1 NA
2 NA
2 Helvetica
答案 0 :(得分: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