将NA替换为另一列的最大因子数

时间:2017-05-26 20:05:04

标签: r dplyr

Okey,在dplyr作弊表上盯着我看了好几个小时后,我现在终于放弃了,并在这里问我的问题。

我有这种形式的数据:

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))

提前致谢...

1 个答案:

答案 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