将缺失值(Na)按组替换为最近的非NA值。我想用dplyr解决以下问题。较佳的窗口功能之一。我有一个数据框架,里面有房子和买价。以下是一个例子:houseID year price 1 1995 NA1 1996 1001 1997 NA1 1998 1201 1999 NA2 1995 NA2 1996 NA2 1997 NA2 1998 302 1999 NA3 1995 NA3 1996 443 1997 NA3 1998 NA3 1999 NA我想做一个这样的数据框架:houseID year price 1 1995 NA1 1996 1001 1997 1001 1998 1201 1999 1202 1995 NA2 1996 NA2 1997 NA2 1998 302 1999 303 1995 NA3 1996 443 1997 443 1998 443 1999 44以下是一些格式正确的数据:# Number of housesN = 15# Data framedf = data.frame(houseID = rep(1:N,each=10), year=1995:2004, price =ifelse(runif(10*N)>0.15, NA,exp(rnorm(10*N))))有办法吗?
3 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
tidyr::fill现在让这件愚蠢的事情变得简单起来:
library(dplyr)
library(tidyr)
# or library(tidyverse)
df %>% group_by(houseID) %>% fill(price)
# Source: local data frame [15 x 3]
# Groups: houseID [3]
#
# houseID year price
# (int) (int) (int)
# 1 1 1995 NA
# 2 1 1996 100
# 3 1 1997 100
# 4 1 1998 120
# 5 1 1999 120
# 6 2 1995 NA
# 7 2 1996 NA
# 8 2 1997 NA
# 9 2 1998 30
# 10 2 1999 30
# 11 3 1995 NA
# 12 3 1996 44
# 13 3 1997 44
# 14 3 1998 44
# 15 3 1999 44
- 3 回答
- 0 关注
- 741 浏览
添加回答
举报
0/150
提交
取消