2017-02-10 122 views
1

我有这样填充缺失数据中的R

pos value 
1 20 
2 30 
4 50 
5 50 
9 30 

的数据集你会注意到,3, 6,7,8位置和相应的值项丢失。我想,以填补他们与相应的值设置为0,这样的数据看起来像这样

pos value 
1 20 
2 30 
3 0 
4 50 
5 50 
6 0 
7 0 
8 0 
9 30 

如何R中实现这一目标的任何想法?

+1

了'merge'可能? 'merge(data.frame(pos = min(df $ pos):max(df $ pos)),df,all.x = TRUE)' –

回答

3

我们可以使用completetidyr

library(tidyr) 
df1 %>% 
    complete(pos = full_seq(pos, 1), fill = list(value=0)) 
# A tibble: 9 × 2 
#  pos value 
# <dbl> <dbl> 
#1  1 20 
#2  2 30 
#3  3  0 
#4  4 50 
#5  5 50 
#6  6  0 
#7  7  0 
#8  8  0 
#9  9 30 

如果我们想继续下去,直到20

df1 %>% 
    complete(pos = full_seq(c(pos,20), 1), fill = list(value=0)) 
+0

非常感谢!我可以给出一个开始和结束的论据吗?假设我希望它继续位于20,这意味着10到20的位置的值将等于0? – eastafri

+1

@eastafri更新了我的帖子 – akrun