【发布时间】:2014-08-12 00:46:56
【问题描述】:
我有这个充满 NA 的 data.frame。
DATE <- c("1","2","3","4","5","6","7","1","2","3","4","5","6","7")
COMP <- c("A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B")
BM <- c(12,11,NA,14,NA,15,NA, 5, 5, NA, 6, NA, 8, 9)
df <- data.frame(DATE, COMP, BM, stringsAsFactors=F)
df
# DATE COMP BM
# 1 1 A 12
# 2 2 A 11
# 3 3 A NA
# 4 4 A 14
# 5 5 A NA
# 6 6 A 15
# 7 7 A NA
# 8 1 B 5
# 9 2 B 5
# 10 3 B NA
# 11 4 B 6
# 12 5 B NA
# 13 6 B 8
# 14 7 B 9
我想用上一行和下一行中的值的平均值替换那些 NA(当然,前提是它是同一家公司)。如果第一行是NA,则取下一行的值,如果最后一行是NA,则取倒数第二行的值。
输出应该是这样的
# DATE COMP BM
# 1 1 A 12
# 2 2 A 11
# 3 3 A 12.5
# 4 4 A 14
# 5 5 A 14.5
# 6 6 A 15
# 7 7 A 15
# 8 1 B 5
# 9 2 B 5
# 10 3 B 5.5
# 11 4 B 6
# 12 5 B 7
# 13 6 B 8
# 14 7 B 9
谢谢!
【问题讨论】:
-
BM能识别公司吗? -
@MarkMiller 我猜
COMP是这样做的。 -
@beginneR 是的,我现在明白了。 cptn 编辑了与列名对齐的帖子。我应该仔细看看。