用每个唯一名称的均值填充单元格数据

时间:2019-04-22 01:27:32

标签: r

过去两天我一直在使用R,但我对此感到有些困惑。我有一个包含投标人名称和投标的数据框,其中一些投标为空。我无法实现一种动态方式来获取每个唯一出价者的平均出价并将其应用于空单元格。下面的代码行将采用所有唯一出价者的平均出价。我需要做的就是将unique_bid的平均值放在具有相同出价者的空白单元格中。

unique_bid <- aggregate(bid ~ bidder, auction[complete.cases(auction),], mean)

Here是数据框的外观图片。

很抱歉,如果难以解释,请多谢!

1 个答案:

答案 0 :(得分:1)

您可以使用ave

示例:

df = data.frame(a = c(1,1,1,2,2,2), b=c(1,2,NA,4,5,NA),c= c(1,2,3,4,5,6))

> df
  a  b c
1 1  1 1
2 1  2 2
3 1 NA 3
4 2  4 4
5 2  5 5
6 2 NA 6

要做:

sel = is.na(df$b)
df$b[sel] = ave(df$b, df$a, FUN = function(x){mean(x, na.rm = T)})[sel]

ave将在按FUN分组的同时将功能df$b应用于df$asel将选择df$b的NA个元素,并将其替换为相应函数的结果。

结果:

> df
  a   b c
1 1 1.0 1
2 1 2.0 2
3 1 1.5 3
4 2 4.0 4
5 2 5.0 5
6 2 4.5 6