2017-02-10 117 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