2017-02-22 21 views
-1

我有這個(大)數據框,我想添加缺少的行(填充0)與名爲「date」的列有關。如何使用某列作爲參考在數據框中添加缺失行(填充0)?

例如:

date 0  1   2   3   4   5 
199807 0  546.98  19355.55 1110.6 4720.34 3435.9 
199808 0  1668.85 4398.29 5816.71 599.7  535.28 
199809 608.79 446.68  2297.68 1862.64 415.6  933.46 
199811 0  0   1366.59 1337.01 0   711.59 
199812 0  0   601.8  2079.9 2030.24 368.44 
199901 0  1462.8  0   552.78 0   0 
199903 0  621.2  2242  753.36 0   0 

而且我想這樣的:

date 0  1  2   3   4   5 
199807 0  546.98 19355.55  1110.6 4720.34 3435.9 
199808 0  1668.85 4398.29  5816.71 599.7  535.28 
199809 608.79 446.68 2297.68  1862.64 415.6  933.46 
199810 0  0  0   0   0   0 
199811 0  0  1366.59  1337.01 0   711.59 
199812 0  0  601.8  2079.9 2030.24 368.44 
199901 0  1462.8 0   552.78 0   0 
199902 0  0  0   0   0   0 
199903 0  621.2 2242   753.36 0   0 

非常感謝您

+0

我想可能你在錯誤的地方零的行;應該是199810排?一種方法是將數據框與包含所有日期的數據框進行合併(儘管這些數據幀不是技術上的日期,但不管怎樣),這將導致帶有「NA」的行,然後用0替換缺失的值。 – joran

+0

你是對的。謝謝,我已經編輯過它。 –

回答

0

它可以如下進行:

1)創建所有其他列中包含所有日期和零的佔位符數據集

2)日期,它是在原始數據集,寫從原來的值佔位數據集

# Create a placeholder dataset, including all dates, 0 at all other columns 
df <- data.frame(date = c(199801:199812, 199901:199912), 
       `1` = 0, `2` = 0, `3` = 0, check.names = FALSE) 

# create the dataset with some data (this will be the 'original' dataset) 
df2 <- data.frame(date = c(199807:199809, 199811:199812, 199901:199903), 
        `1` = rnorm(8), `2` = rnorm(8), `3` = rnorm(8), check.names = FALSE) 

# write data from original dataset to placeholder dataset 
df[df$date %in% df2$date,] <- df2