我有这种形式的数据:
ID Material Supplier
1 a 01
2 b 02
3 NA 01
4 NA 02
4 a 02
4 b 02
现在,我想用供应商分组的最常见材料替换NA。我正在使用此代码来计算最常见的材料并将计数放在数据框中b但我想同时进行替换。
b <- a[which(!is.na(a$material)),] %>%
group_by(supplier, material) %>%
summarise(n = n()) %>%
group_by(supplier) %>%
filter(n == max(n))
提前致谢...
答案 0 :(得分:2)
您可以使用table
函数中的dplyr
执行此操作:
a %>%
group_by(Supplier) %>%
mutate(Material=ifelse(is.na(Material),names(sort(table(Material),dec=T))[1],Material))
返回:
ID Material Supplier
<int> <chr> <int>
1 1 a 1
2 2 b 2
3 3 a 1
4 4 b 2
5 4 a 2
6 4 b 2