首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用R中前几年和未来年份的平均值来填充面板数据的NA值?

如何用R中前几年和未来年份的平均值来填充面板数据的NA值?
EN

Stack Overflow用户
提问于 2017-12-20 04:20:34
回答 1查看 247关注 0票数 0

如何产生归算变量的结果?ID1的2001年是2000年和2002年的平均数。

代码语言:javascript
运行
复制
id             Year     A      imputed
1              2000     6       6
1              2001     NA      7
1              2002     8       8
1              2003     10      10
2              2000     2       2
2              2001     NA      5
2              2002     8       8
2              2003     5       5
3              2000     9       9 
3              2001     10      10
3              2002     NA      10.5
3              2003     11      12
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 06:21:01

代码语言:javascript
运行
复制
library(dplyr)
df %>%
  arrange(id,Year) %>%
  mutate(Imputed = ifelse(is.na(A), (lag(A)+lead(A))/2, A))

产出如下:

代码语言:javascript
运行
复制
   id Year  A Imputed
1   1 2000  6     6.0
2   1 2001 NA     7.0
3   1 2002  8     8.0
4   1 2003 10    10.0
5   2 2000  2     2.0
6   2 2001 NA     5.0
7   2 2002  8     8.0
8   2 2003  5     5.0
9   3 2000  9     9.0
10  3 2001 10    10.0
11  3 2002 NA    10.5
12  3 2003 11    11.0

代码语言:javascript
运行
复制
#sample data
> dput(df)
structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L), Year = c(2000L, 2001L, 2002L, 2003L, 2000L, 2001L, 2002L, 
2003L, 2000L, 2001L, 2002L, 2003L), A = c(6L, NA, 8L, 10L, 2L, 
NA, 8L, 5L, 9L, 10L, NA, 11L)), .Names = c("id", "Year", "A"), class = "data.frame", row.names = c(NA, 
-12L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47898739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档