0

在过去的几天里,我一直在使用 R,但我有点困惑。我有一个包含投标人姓名和投标的数据框,其中一些投标是空的。我无法实施一种动态方式来获取每个唯一投标人的平均出价并将其应用于空单元格。下面的这行代码将采用所有唯一投标人的平均出价。我需要做的就是将 unique_bid 的平均值放在共享同一投标人的空单元格中。

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

是数据框的外观图片。

4

1 回答 1

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]

aveFUNdf$b分组时将使用应用函数df$a。将sel选择 NA 元素df$b并用相应函数的结果替换它们。

结果:

> 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
于 2019-04-22T01:48:51.637 回答