2013-01-20 21 views
8

Tarih sütunu olan bir data.frame sahibim.Data.frame'deki boşluklar nasıl doldurulur (tarih-)?

 date value 
1 2013-01-01  5 
2 2013-01-01  3 
3 2013-01-03  3 
4 2013-01-04  3 
5 2013-01-04  1 
6 2013-01-06  1 

nasıl yüzden şu olsun bu data.frame tarih-boşlukları doldurmak mı: Bu tarihler ayrıca sıfır zamanlı defalarca ortaya, ama?

 date value 
1 2013-01-01  5 
2 2013-01-01  3 
3 2013-01-02  0 
4 2013-01-03  3 
5 2013-01-04  3 
6 2013-01-04  1 
7 2013-01-05  0 
8 2013-01-06  1 

Herhangi bir yardım gelebilir.

TIA, Jerry

cevap

14

Sen dizideki tüm tarihleri ​​containg başka data.frame ile data.frame merge edebilirsiniz. Burada dat'ın orijinal data.frame olduğunu kabul ediyorum.

hh<- data.frame(date=seq(as.Date("2013-01-01"), as.Date("2013-01-6"), by="days")) 
>res <- merge(dat,hh,by.x='date',by.y='date',all.x=T,all.y=T) 
     date value 
1 2013-01-01  5 
2 2013-01-01  3 
3 2013-01-02 NA 
4 2013-01-03  3 
5 2013-01-04  3 
6 2013-01-04  1 
7 2013-01-05 NA 
8 2013-01-06  1 

Şimdi, dat içinde hh'de eşleşen satır bulunmayan her satır için NA'mız var. Personaly, ben bu değerleri eksik olduğunu söylemek NA olması daha iyi olduğunu düşünüyorum Ama 0'a ayarlayabilirsiniz:

res$value[is.na(res$value)] <- 0 

Düzenleme

sen hh üretebilir genelliği için @Arun gösterildiği gibi çözüm:

 hh <- seq(min(dat$date), max(dat$date), by="days") 
+1

@Arun teşekkürler! Genel durumdaki tarihlerini oluşturmak için fikrinizi kullandım. – agstudy

+0

Çok teşekkürler. Ben de ikinci bir data.frame ile çalışıyordum. Ama her zaman varsayılan değerler için tarih VE değer sütununa sahip bir df kullandım. Yani birleştikten sonra her zaman çok fazla sütun var. :-( – JerryWho

+0

@JerryBizi gördüğümde, birleştirme tuşlarının anahtarı anahtarlar .. by.x verdiğinizde ve diğerlerinden sütunlar önemli değil .. – agstudy

İlgili konular